算法的出现,远远早于计算机,所以关于算法的知识点也非常多,大家不要急于求成,而本篇将从算法的概念、特征、评价以及复杂度四个方面详细介绍算法,希望关于算法的内容给大家一个清晰的认识,方便大家在日后的运用有更深的概念。
一、算法的概念
算法(algorithm,[lɡrem],计算程序):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
简单来说,算法就是解决一个问题的具体方法和步骤。
程序=算法+数据结构
二、算法的特征
(1)可行性
(2)确定性
算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。
(3)有穷性
(4)输入
算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法已经给出了初始条件。
(5)输出
一个算法可能有1个或多个输出,以反映输入数据加工后的代码,没有输出的算法是没有意义的!
三、算法的评价
通常一个好算法应该达到如下目标:
(1)正确性
算法应该正确的解决问题。
(2)可读性
算法应该具有较好的可读性,让人们理解算法的作用。
(3)健壮性
输入非法数据时,算法也可以做出适当的反应,而不会产生奇奇怪怪的输出。
四、算法的复杂度
O(2)
O(k)
O(n!)
示范:
1.O(1)级代码
//计算长方形面积inta,b;cin>>a>>b;ints=a*b;cout<
//二分查找intsearch(intnums[],intsize,inttarget)//nums是数组,size是数组的大小,target是需要查找的值{intleft=0;intright=size-1;//定义了target在左闭右闭的区间内,[left,right]while(left<=right){//当left==right时,区间[left,right]仍然有效intmiddle=left+((right-left)/2);//等同于(left+right)/2,防止溢出if(nums[middle]>target){right=middle-1;//target在左区间,所以[left,middle-1]}elseif(nums[middle] //计算n的阶乘intn;cin>>n;intji=1;for(inti=1;i<=n;i++){ji*=i;}cout< 以上是关于算法知识的介绍,有了基础概念的理解,方便后期我们学习算法的运用和实操。 C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解: