第3部分 竞赛篇
第8章 高效算法设计
学习目标
- 理解“基本操作”、渐进时间复杂度的概念和大O记号的含义
- 掌握“最大连续和”问题的各种算法及其时间复杂度分析
- 正确认识算法分析的优点和局限性,能正确使用分析结果
- 掌握归并排序和逆序对统计的分治算法
- 理解快速排序和快速选择算法
- 熟练掌握二分查找算法,包括找上下界的算法
- 能用递归的方式思考和求解问题
- 熟练掌握用二分法求解非线性方程的方法
- 熟练掌握用二分法把优化问题转化为判定问题的方法
- 熟悉能用贪心法求解的各类经典问题
- 掌握本章中介绍的各种算法设计思路与方法
尽管直观、适用范围广,但枚举、回溯等暴力方法常常无法走出“低效”的阴影。这并不难理解:越是通用的算法,越不能深入挖掘问题的特殊性。本章介绍一些经典问题的高效算法。由于是“量身定制”的,这些算法从概念、思路到程序实现都是千差万别的。从某种意义上说,从本章开始,读者才刚刚开始接触“严肃”的算法设计理论。