C++ 算法
通过前 9 期对 C++ 语言的学习,你肯定很容易就能编写 C++ 代码来解决问题了
其实,C++ 语言仅仅是 C++ 中的冰山一角,算法才是占据 C++ 中绝大部分的东西
算法是什么
算法 ( Algorithm ),是解决问题的方法,通过一系列代码来解决问题的代码。
算法消耗的时间是和占用的空间必须是合理的
例如,某人有一个算法,时间复杂度为O(n!),这种算法所用的时间肯定是非常长,当 n 为 11 时,1s 的时间就超了。至于 1s 以上其实我们都等得起,但是,如果这些算法要用在一些需要快速给出答案的程序中,这样长的时间就非常的不友好了
所以,在今后的学习中,我们将会经常涉及到各个算法的时间复杂度,我们通过对算法的时间复杂度进行和空间复杂度等作为标准判断那种算法更加好
算法的特征
算法要具有五大特征
有限性 ( Finiteness ) : 即算法必须在执行有限个步骤之后停下,就是说如果一段代码永远停不下来就没意义了(废话)
确定性 ( Definiteness ) : 即算法的每一步都要有确切的意义,就是说一段代码是对答案没有意义的东西时它就没意义了(废话)
可行性 ( Effectiveness ) : 即算法的每个部分都要在一定的时间内执行完成,就是说这个算法要等待 10 年后才能输出答案那么它就没意义了(废话)
输入 ( Input ) : 即算法必须要有 0 个 ( 包括 0 个 ) 以上个输入,就是说算法肯定是对某种东西进行加工,必须要有原材料(废话)
输出 ( Output ) : 即算法要有至少 1 个输出,当然像 void 这样没有返回值的算法对值得修改也算是一种输出,就是说算法只执行,不输出就没有意义了(废话)
这就是算法的五大特征了
写一个算法
说了那么多关于算法的事,我们来编写一个算法吧,当然不是自己想一个算法
例如,我们写一个查找指定值得算法
#include<iostream>
#include<cstdio>
using namespace std;
int a[1000000];
int **in()
{
int i,n,m;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a);
while(true)
{
printf("请输入您要查找的数:");
scanf("%d",&m);
for(i=1;i<=n;++i)
{
if(a==m)
{
printf("位于下标 %d 处\n",i);
break;
}
}
if(i==n+1) printf("未查找到指定值\n");
}
return 0;
}
这是一个非常简单的算法,时间复杂度为 O( n ) ( 一般时间复杂度取最坏情况下 )
那么,这就是一个非常简单的算法了
今后如何学习算法
学习算法,首先要明白算法的执行过程,理解算法每一步的目的,不能盲目的进行背诵,还要想想算法可以怎么样进行优化,让它执行的更加快
编写算法时是一定会遇到问题的,这时,我们就要找出算法中存在的问题,这就很考验自身对算法的理解以及对错误返回值的判断了
总而言之,学习算法也没什么诀窍,就是要通过多写写,多看看 ( 同时它还很容易被忘掉 )
较后,这期的内容确实比较少,主要介绍了算法是什么,以及我们该如何学习算法
今后的学习中,算法也确实占了极大一部分,如果算法学不好,就很难前进,更何况现在学习的算法还是一些比较简单的算法
好了,这次就到这里了
相信你已经懂得了算法,并且已经跃跃欲试了吧,下一期,我们将要学习高精度算法
文档下载
转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。
链接:C++ 算法http://www.gufeng7.com/niaolang/1852.html
联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com
上一篇: C++ 函数讲解与一本通平台讲解
下一篇: C++ 基础算法 - 高精度