第1章 算法的基本概念
1.1 引言
1.1.1 算法的定义和特征
1.1.2 算法设计的例子,穷举法
1.1.3 算法的复杂性分析
1.2 算法的时间复杂性
1.2.1 算法的输入规模和运行时间的阶
1.2.2 运行时间的上界,O记号
1.2.3 运行时间的下界,Ω记号
1.2.4 运行时间的准确界,Θ记号
1.2.5 O记号、Ω记号、Θ记号的性质
1.2.6 复杂性类型和o记号
习题
参考文献
第2章 算法的复杂性分析
2.1 常用的函数和公式
2.1.1 整数函数
2.1.2 对数函数
2.1.3 排列、组合和二项式系数
2.1.4 级数求和
2.2 算法的时间复杂性分析
2.2.1 循环次数的统计
2.2.2 基本操作频率的统计
2.2.3 计算步的统计
2.3 最好情况、最坏情况和平均情况分析
2.3.1 最好情况、最坏情况和平均情况
2.3.2 最好情况和最坏情况分析
2.3.3 平均情况分析
2.4 用生成函数求解递归方程
2.4.1 生成函数及其性质
2.4.2 用生成函数求解递归方程
2.5 用特征方程求解递归方程
2.5.1 k阶常系数线性齐次递归方程
2.5.2 k阶常系数线性非齐次递归方程
2.6 用递推方法求解递归方程
2.6.1 递推
2.6.2 用递推法求解变系数递归方程
2.6.3 换名
2.7 算法的空间复杂性
2.8 最优算法
习题
参考文献
第3章 排序问题和离散集合的操作
3.1 合并排序
3.1.1 合并排序算法的实现
3.1.2 合并排序算法的分析
3.2 基于堆的排序
3.2.1 堆
3.2.2 堆的操作
3.2.3 堆的建立
3.2.4 堆的排序
3.3 基数排序
3.3.1 基数排序算法的思想方法
3.3.2 基数排序算法的实现
3.3.3 基数排序算法的分析
3.4 离散集合的Union_Find操作
3.4.1 用于Union_Find操作的数据结构
3.4.2 union、find操作及路径压缩
习题
参考文献
第4章 递归和分治
4.1 基于归纳的递归算法
4.1.1 基于归纳的递归算法的思想方法
4.1.2 递归算法的例子
4.1.3 排列问题的递归算法
4.1.4 求数组主元素的递归算法
4.1.5 整数划分问题的递归算法
4.2 分治法
4.2.1 分治法的例子
4.2.2 分治法的设计原理
4.2.3 快速排序
4.2.4 多项式乘积和大整数乘法
4.2.5 平面点集最接近点对问题
4.2.6 选择问题
4.2.7 残缺棋盘问题
习题
……
第5章 贪婪法
第6章 动态规划
第7章 回溯
第8章 分支与限界
第9章 随机算法
第10章 图和网络问题
第11章 计算几何问题
第12章 NP完全问题
第13章 计算复杂性
第14章 下界
第15章 近似算法
参考文献