算法的定义:
- 算法是由一组指令序列构成
- 有输入和输出
- 确定性,对结果无歧义
- 有限性,应该在有限的时间内计算完成
算法设计的过程:
- 理解问题,找出我们要解决的问题
- 数据结构设计,设计出符合我们问题的数据结构
- 算法设计,设计算法解决问题
- 算法优化,优化我们的算法,使问题更加高效的完成
- 程序实现,根据优化好的算法变写我们的程序
- 重复上面的3.4.5步
算法要满足,正确性,可读性,健壮性,高效性
算法的复杂度分析:
- 定量分析:属于实证主义和后实证主义 简单的说就是看执行结果分析好坏
- 定性分析:从属于建构主义/阐释主义 在执行之前设计的时候就分析出好坏
分析的方向主要分为:
- 时间复杂度
- 空间复杂度
复杂度函数:
N表示数据规模,I表示输入 A表示函数 算法重点就是研究函数对复杂度的影响
我们知道算法的执行时间T与和算法的执行步数正相关
算法的执行步数我们用计算步表示,算法需要执行的步数,和数据的规模和输入顺序有关
所以说关于时间复杂度T=(N,I)
O(F(n))=执行语句的次数的总和
所以说优秀的算法因该是解决问题的同时,执行的语句尽量少
我们下面所讲的所有算法都是基于这两个目的的