一、算法的基本概念
算法是对特定问题求解步骤的一种描述,它是指令的有限序列。
1、5个重要特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
2、好的算法应有的4个目标
- 正确性
- 可读性
- 健壮性
- 效率与低存储量需求
二、算法的效率度量
算法效率的度量是通过时间复杂度和空间复杂度来描述的
1、时间复杂度
一个语句的频度是指该语句再算法中被重复执行的次数。
算法中所有语句的频度之和记为T(n)。
下面以几张图来理解(图片来自王道考研)
算法复杂度的加法规则和乘法规则
我们可以得出三个结论
- 结论1:顺序执行的代码只会影响常数项,可以忽略
- 结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可
- 结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次
最坏时间复杂度:最坏情况下算法的时间复杂度
平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间
最好时间复杂度:最好情况下算法的时间复杂度
一般来说,看算法的时间复杂度不看最好时间复杂度
2、空间复杂度
算法的空间复杂度S(n)定义为该算法所在耗费的存储空间,它是问题规模n的函数。记为S(n)=O(g(n))。