第一部分 11
第1章 算法真的很重要 11
理解问题 12
如果需要,尽可能用实践检验 13
解决问题的算法 15
花絮 16
故事的寓意 17
参考文献 19
第2章 算法的数学原理 20
问题样本的规模 20
函数的增长率 22
最好最坏和平均情况下的性能分析 26
性能指标 30
混合操作 43
基准测试 43
最后一点 45
参考文献 46
第3章 模式和领域 47
模式:一种交流语言 47
算法模式的格式 49
伪代码模式的格式 49
设计格式 50
基于经验的评价格式 52
领域和算法 52
浮点计算 54
手动内存分配 58
选择一门编程语言 60
参考文献 61
第二部分 65
第4章 排序算法 65
概述 65
插入排序 71
中值排序 75
快速排序 85
选择排序 92
堆排序 93
计数排序 98
选择排序算法的标准 105
参考文献 110
第5章 查找 112
概述 112
顺序查找 113
二分查找 118
基于散列的查找 122
二叉查找树 135
参考文献 141
第6章 图算法 143
概述 143
深度优先搜索 149
广度优先搜索 155
单源最短路径 159
所有点对最短路径 170
最小生成树算法 173
参考文献 176
第7章 人工智能中的寻路 177
概述 177
深度优先搜索 185
广度优先搜索 194
A*搜索 198
比较 208
Minimax 211
NegMax 216
AlphaBeta 219
参考文献 226
第8章 网络流算法 229
概述 229
最大流 232
二部图匹配 240
在增广路上的深入思考 244
最小开销流 246
转运问题 248
运输问题 248
任务分配问题 250
线性编程 250
参考文献 251
第9章 计算几何 252
概述 252
凸包扫描 261
线段扫描 269
最近点查询 280
范围查询 289
参考文献 296
第三部分 299
第10章 最后的招数 299
另类算法 299
近似算法 300
离线算法 300
并行算法 300
随机算法 301
结果可能出错却可以衰减错误率的算法 308
参考文献 311
第11章 尾声 312
概述 312
原则:了解数据 312
原则:将问题分解至更小的问题 313
原则:选择正确的数据结构 314
原则:空间换时间 315
原则:如果没有显而易见的解法,使用搜索 315
原则:如果没有显而易见的解法,将问题归约为另一个有解的问题 316
原则:编写算法难,测试算法更难 317
第四部分 321
附录 基准测试 321