算法分析——研究性能和资源利用的
算法设计
什么比性能更重要?
为什么要学习算法?
1. 解决最前沿的东西(重复十年前的东西,一般不需要算法);
2. 是更好用户体验的基础,更好安全性的保障;
3. 性能是最底层的东西,相当于“货币”;
4.有趣。
伪代码的好处:使算法描述简洁,易书写。
三种算法分析:
最坏时间分析——运行的上界,用户承诺时间
平均时间分析(需要假设统计分布)
最好时间分析——没什么用
渐近分析:去掉与机器相关的常量,关注时间增长。
排序问题:
插入排序:与输入的情况有关(如:已经排好序)
与输入规模有关
当N很小时,快;N较大时,慢
归并排序:当N大于30时,快
用递归树方法得到递归算式的界值。
只学习算法分析并不能成为编程高手,还要结合工程实际(什么时候问题与算法相关,什么时候不相关)
个人总结:MIT的课程让人感觉讲的让人明白,不仅讲了什么,还讲了为什么,这样做的好处及不足是什么。