前言
教学建议
第一部分计算模型
第1 章抽象的算法设计与分析 2
11 RAM 模型的引入 2
111 计算的基本概念 2
112计算模型的基本概念 3
113RAM 模型 3
114计算模型的选择:易用性与精确性 5
12 抽象算法设计 6
121 算法问题规约 6
122 算法正确性证明:数学归纳法 7
13 抽象算法分析 8
131 抽象算法的性能指标 8
132 最坏情况时间复杂度分析 9
133 平均情况时间复杂度分析 10
14 习题 11
第2 章从算法的视角重新审视数学的概念 14
21 数学运算背后的算法操作 14
211 取整 x 和 x 14
212 对数log n 14
213 阶乘n! 15
214 常用级数求和f (i) 16
215 期望E[X] 18
22 函数的渐近增长率 19
23 “分治递归”求解 21
231 替换法 21
232 分治递归与递归树 21
233 Master 定理 22
24 习题 23
第二部分从蛮力到分治
第3 章蛮力算法设计 31
31 蛮力选择与查找 31
32 蛮力排序 32
321选择排序 32
322插入排序 33
33 习题 35
第4 章分治排序 37
41 快速排序 37
411插入排序的不足 37
412快速排序的改进 38
413最坏情况时间复杂度分析 39
414基于递归方程的平均情况时间复杂度分析 40
415基于指标随机变量的平均情况时间复杂度分析 41
42 合并排序 43
43 基于比较的排序的下界 44
431决策树的引入 45
432比较排序的最坏情况时间复杂度的下界 45
433比较排序的平均情况时间复杂度的下界 46
44 习题 48
第5 章线性时间选择 50
51 期望线性时间选择 50
511选择算法设计 50
512选择算法分析 51
52 最坏情况线性时间选择 52
521选择算法设计 52
522选择算法分析 53
53 习题 54
第6 章对数时间查找 57
61 折半查找 57
611经典折半查找 57
612查找峰值 58
613计算√N 59
62 平衡二叉搜索树 59
621二叉搜索树及其平衡性 59
622红黑树的定义 60
623红黑树的平衡性 62
63 习题 62
第7 章分治算法设计要素 65
71 分治算法的关键特征 65
72 计算逆序对的个数 66
721依托于合并排序的逆序对计数 66
722原地的逆序对计数 67
73 整数乘法 68
731简单分治 69
732更精细的分治