1.2.1 算法的定义
1. 算法:
·有限指令集
·接受一些输入
·产生至少一个输出
·有限步骤终止
·每一条指令必须
1)充分的目标;
2)没有歧义
3)描述应该不依赖于任何一种计算机语言;
例1:选择排序算法:
上面具体的描述细节,算法不关心。
2. 什么是好的算法?
递归函数的空间复杂度更高。
例子:
两个算法那个好?
1)计算机运行乘除法比加减法速度慢很多,不在一个数量级;
所以,我们去计算一下哪个乘法数量多:
因此,在分析一般算法效率的时候,我们经常关注下面两种复杂度:
1)最坏情况的复杂度
2)平均复杂度
通常,我们最关心最坏复杂度,因为这个平均复杂度,我们很难去定义它。
3.复杂度的渐进表示法
注意:在对于O和Ω,上界和下届不是唯一,但是过大的上界和过小的下届,没意义,所以说,我们通常写的是能力范围内能找到的最大下界和最小上界。
感性理解:
注意,算法题中,一旦出现n方的算法,一定思考一下,能不能降成nlogn
时间表(一些换算):
小窍门
-
两端算法并列和嵌套:
-
最大项法则:
3. for循环分析:
4. if-else结构:取三者判断的最大复杂度