第一讲:算法分析
1. 计算机程序的性能的理论研究。
而实际工程中有很多笔性能更重要的,e.g.可维护性,可移植性,可扩展性…
2. 分析的方法
2.1 最坏情况分析(Worst-Case,最常用)
T(n)= max time on any input of size n.
2.2 平均情况分析(Average-Case,有时用)
T(n) = expected time over all inputs of size n.
2.3 最好情况分析(Best-Case,不常用)
课程中说这是一个bogus,即虚假的。
3. Theta表示法(用o表示)
工程上:丢弃低阶项,忽略常数项;e.g. 3n^3+90n^2-5n+6046=o(n^3).
4. 排序分析
4.1 直接插入排序
伪代码:
直接插入排序最坏时间复杂度为o(n^2),平均时间复杂度为o(n^2)。
4.2 归并排序
伪代码
其时间复杂度为o(n) = n*log(n)
4.3 插入排序和归并排序时间复杂度对比图
由上图可以看到,当n增大时,归并排序的优势会变得特别大。