目 录 1
第1章绪论 1
1.1算法的概念 2
习题1.1 6
1.2算法问题求解基础 7
习题1.2 13
1.3重要的问题类型 15
习题1.3 18
1.4基本数据结构 20
习题1.4 30
小结 31
第2章算法效率分析基础 33
2.1 分析框架 34
习题2.1 40
2.2渐进符号和基本效率类型 41
习题2.2 47
2.3非递归算法的数学分析 49
习题2.3 53
2.4递归算法的数学分析 55
习题2.4 61
2.5例题:斐波那契数列 63
习题2.5 67
2.6算法的经验分析 68
习题2.6 72
2.7算法可视法 74
小结 77
第3章蛮力法 79
3.1 选择排序和冒泡排序 80
习题3.1 83
3.2顺序查找和蛮力字符串匹配 83
习题3.2 85
3.3最近对和凸包问题的蛮力算法 86
习题3.3 90
3.4穷举查找 91
习题3.4 95
小结 96
第4章分治法 99
4.1 合并排序 101
习题4.1 103
4.2快速排序 104
习题4.2 108
4.3折半查找 109
习题4.3 111
4.4二叉树遍历及其相关特性 112
习题4.4 114
4.5 大整数乘法和Strassen矩阵乘法 115
习题4.5 119
4.6用分治法解最近对问题和凸包问题 120
习题4.6 123
小结 124
第5章减治法 125
5.1 插入排序 127
习题5.1 129
5.2深度优先查找和广度优先查找 130
习题5.2 135
5.3 拓扑排序 137
习题5.3 139
5.4生成组合对象的算法 141
习题5.4 144
5.5减常因子算法 145
习题5.5 148
5.6减可变规模算法 149
习题5.6 153
小结 154
第6章变治法 155
6.1预排序 156
习题6.1 158
6.2高斯消去法 159
习题6.2 166
6.3平衡查找树 168
习题6.3 174
6.4堆和堆排序 175
习题6.4 180
6.5霍纳法则和二进制幂 181
习题6.5 186
6.6问题化简 187
习题6.6 193
小结 194
第7章时空权衡 197
7.1 计数排序 198
习题7.1 200
7.2 串匹配中的输入增强技术 201
习题7.2 209
7.3 散列法 210
习题7.3 214
7.4 B树 215
习题7.4 218
小结 219
第8章动态规划 221
8.1计算二项式系数 222
习题8.1 224
8.2 Warshall算法和Floyd算法 225
习题8.2 231
8.3最优二叉查找树 232
习题8.3 236
8.4背包问题和记忆功能 237
习题8.4 240
小结 241
第9章贪婪技术 243
9.1Prim算法 244
习题9.1 248
9.2 Kruskal算法 249
习题9.2 255
9.3 Dijkstra算法 256
习题9.3 259
9.4哈夫曼树 260
习题9.4 263
小结 264
第10章算法能力的极限 265
10.1如何求下界 266
习题10.1 270
10.2决策树 271
习题10.2 275
10.3 P、NP和NP完全问题 276
习题10.3 282
10.4数值算法的挑战 284
习题10.4 291
小结 292
第11章超越算法能力的极限 295
11.1 回溯 295
习题11.1 301
11.2分支界限 302
习题11.2 309
11.3 NP困难问题的近似算法 310
习题11.3 317
11.4解非线性方程的算法 319
习题11.4 326
小结 327
跋 329
附录A:算法分析的实用公式 333
对数的性质 333
组合学 333
重要的求和公式 333
向下取整和向上取整公式 334
用定积分逼近求和式 334
求和乘法法则 334
其他 335
附录B:递推关系简明指南 337
序列和递推关系 337
递推关系的求解方法 338
算法分析中的常见递推类型 341
习题提示 349
第1章 349
第2章 351
第3章 355
第4章 357
第5章 360
第6章 364
第7章 367
第8章 369
第9章 371
第10章 373
第11章 376
参考文献 381