一开始本来想起题名“算法导论”,但是感觉这题名写100篇文章也写不完,秉着起个贱名好养活的精神,于是“算法入门”诞生了。
这篇文章是“学习”网站B站上的麻省理工学院公开课:算法导论的学习笔记
运行时间
- 与输入有关
- 输入规模
程序运行上界(代表了某种保证)
分析类型
- 最坏情况(经常使用)
T(n)
——当输入规模为n时所消耗的时间,这里的n代表最大值 - 平均时间
期望时间 - 最好情况
假象(bogus),一般不会发生 - 速度
- 相对速度 —— 相同机器
- 绝对速度 —— 不同机器
渐进分析
- 忽略掉与机器有关的常量
- 不检查代码实际运行时间,只关注增长的时间
渐进符号 θ
- 丢弃低阶项,忽略常数因子
e.g.3n^3^ + 90n^2^ - 5n + 6046 ——> θ(n^3^)
所谓渐进分析,恰如上图,当n足够大,远远大于n0的时候,θ(n2)是远远大于θ(n3)的,但是若输入规模极小,则θ(n2)和θ(n3)均可以。
参考链接
[1] Thomas H.Cormen、Charles E.Leiserson等《算法导论》机械工业出版社.2006