算法与数据结构
算法
- 有穷性
 - 确定性
 - 可行性
 - 输入输出
 
好的算法
正确性
循环不变式
在排序算法中,每一轮循环做的操作就是一轮不变式,通过证明三条性质来确定算法是正确的
- 初始化:第一次迭代前,为真
 - 保持:如果迭代之前为真,迭代之后也为真
 - 终止时,停止归纳
 
易读性
健壮性
高效性
低存储性
分析算法
对于复杂度的分析,一般分析的都是在最坏情况下的复杂度
需要分析复杂度的原因在于不同的算法对于不同量级的数据,所需要的时间与空间会相差很多
复杂度的衡量单位是增长量级,也就是时间或空间的增长率
时间复杂度
- 常数:n
 - 多项式
- n^2 n^3
 
 - 指数
- 2^n n!
 
 - 对数
- logn