图书目录

目录

第 1章引言                                                                                                        1 

1 1算法的定义                                                                                              1 

1 1 1算法的属性                                                                                   2 

1 1 2效率的定义                                                                                   3 

1 2算法设计与分析举例                                                                                5 

1 2 1寻找局部高点 -1D                                                                          5 

1 2 2图书管理                                                                                      8 

1 3小结                                                                                                       10 课后习题                                                                                                        11

第 2章渐进分析与 Python计算模型                                                                 13 

2 1引言                                                                                                       13 

2 2计算模型                                                                                                13 

2 3算法的渐进分析                                                                                      14 

2 4 Python计算模型                                                                                    17 

2 4 1控制流语句                                                                                  17 

2 4 2数据结构                                                                                     19 

2 5算法分析实例                                                                                         21 

2 5 1求最大值                                                                                     22 

2 5 2二分搜索                                                                                     22 

2 5 3子集和问题                                                                                  23 

2 6小结                                                                                                       24 课后习题                                                                                                        25

第 3章问题求解与代码优化                                                                                27 

3 1引言                                                                                                       27 

3 2文档比较                                                                                                27 

3 2 1问题提出                                                                                     27 

3 2 2算法设计                                                                                     28 

3 2 3算法优化                                                                                     31 

3 3拼写矫正                                                                                                33 

3 3 1问题提出                                                                                     33 

3 3 2算法设计                                                                                     33 

3 4稳定匹配问题                                                                                         36 

3 4 1问题提出                                                                                     36 

3 4 2算法设计                                                                                     38 

3 5小结                                                                                                       40 课后习题                                                                                                        41

第 4章递归算法与递归函数                                                                                42 

4 1引言                                                                                                       42 

4 2递归的组成结构                                                                                      42 

4 2 1如何筹集巨款                                                                               42 

4 2 2上线与下线                                                                                  44 

4 3递归算法的执行                                                                                      45 

4 3 1跟踪函数的执行                                                                           47 

4 4利用递归算法求解问题                                                                            51 

4 4 1回文判断                                                                                     51 

4 4 2全排列                                                                                         53 

4 4 3汉诺塔问题                                                                                  54 

4 4 4雪花曲线                                                                                     57 

4 5递归函数的求解                                                                                      58 

4 5 1替换法                                                                                         59 

4 5 2主分析法                                                                                     60 

4 6小结                                                                                                       62 课后习题                                                                                                        63

第 5章排序与树结构                                                                                          64 

5 1引言                                                                                                       64 

5 2递归与排序                                                                                             65 

5 2 1选择排序                                                                                     65 

5 2 2插入排序                                                                                     67 

5 2 3合并排序                                                                                     69 

5 3二叉搜索树                                                                                             72 

5 3 1 BST的实现                                                                                 74 

5 3 2插入新结点                                                                                  75 

5 3 3 BST上查找                                                                                 77 

5 3 4二叉树修剪                                                                                  78 

目录 IX 

5 4堆                                                                                                          81 

5 4 1堆化操作                                                                                     81 

5 4 2构造堆                                                                                         83 

5 4 3堆排序                                                                                         85 

5 4 4合并 k个有序序列                                                                        86 

5 5小结                                                                                                       87 课后习题                                                                                                        88

第 6章分治算法                                                                                                90 

6 1引言                                                                                                       90 

6 2股票的买卖                                                                                             91 

6 2 1问题描述                                                                                     91 

6 2 2算法设计                                                                                     91 

6 3统计逆序                                                                                                94 

6 3 1问题描述                                                                                     94 

6 3 2算法设计                                                                                     94 

6 4空间最小距离点对                                                                                   97 

6 4 1问题描述                                                                                     97 

6 4 2算法设计                                                                                     98 

6 5寻找第 k小的数                                                                                    103 

6 5 1问题描述                                                                                   103 

6 5 2算法设计                                                                                   103 

6 6大整数乘法                                                                                           107 

6 6 1问题描述                                                                                   107 

6 6 2算法设计                                                                                   108 

6 7小结                                                                                                     109 课后习题                                                                                                      109

第 7章图搜索算法                                                                                           111 

7 1引言                                                                                                     111 

7 2图搜索的应用                                                                                       112 

7 3图的表示                                                                                              113 

7 4宽度优先搜索                                                                                       114 

7 4 1宽度优先搜索算法                                                                      114 

7 4 2 BFS算法分析                                                                            117 

7 4 3 BFS算法应用举例                                                                     117 

7 5深度优先搜索                                                                                       121 

7 5 1深度优先搜索算法                                                                      121 

7 5 2 DFS算法分析                                                                            124 

7 5 3 DFS应用举例                                                                            124 

7 6小结                                                                                                     126 课后习题                                                                                                      126

第 8章贪心算法                                                                                              128 

8 1引言                                                                                                     128 

8 2硬币找零                                                                                              128 

8 2 1问题描述                                                                                   128 

8 2 2问题求解                                                                                   129 

8 2 3最优解证明                                                                                130 

8 3间隔任务规划                                                                                       130 

8 3 1问题描述                                                                                   130 

8 3 2问题求解                                                                                   131 

8 3 3最优解证明                                                                                133 

8 4单源最矩路径问题                                                                                 134 

8 4 1 Dijkstra问题                                                                             135 

8 4 2算法的正确性                                                                             136 

8 4 3算法的性能优化                                                                         137 

8 5最小生成树                                                                                           139 

8 5 1 Prim算法                                                                                  140 

8 5 2算法实现                                                                                   142 

8 6小结                                                                                                     145 课后习题                                                                                                      145

第 9章动态规划算法                                                                                        147 

9 1引言                                                                                                     147 

9 2再遇斐波那契数                                                                                    147 

9 3一维动态规划                                                                                       151 

9 3 1拾捡硬币                                                                                   152 

9 3 2连续子序列和的最大值                                                               155 

9 3 3疯狂的 8                                                                                     157 

9 3 4文本排版                                                                                   161 

9 3 5完全信息的 21点                                                                       165 

9 4二维动态规划                                                                                       169 

9 4 1矩阵的括号                                                                                169 

9 4 2字符串编辑距离                                                                         173 

9 4 3 0-1背包问题                                                                              176 

目录 XI 

9 5小结                                                                                                     179 课后习题                                                                                                      180

第 10章最大流算法应用                                                                                  182 

10 1引言                                                                                                   182 

10 2最大流算法                                                                                         182 

10 2 1 Ford-Fulkerson算法                                                                 186 

10 2 2 Edmond-Karp算法                                                                  187 

10 3最大流算法的应用                                                                               189 

10 3 1二向图最大匹配问题                                                                189 

10 3 2文件传输中的不重合边问题                                                      191 

10 4小结                                                                                                   193 课后习题                                                                                                      193

第 11章随机算法                                                                                            195 

11 1引言                                                                                                   195 

11 2矩阵乘积结果验证                                                                               196 

11 3快速排序                                                                                            198 

11 3 1根据支点数划分输入序列                                                         199 

11 3 2选择支点数                                                                             200 

11 3 3随机快速排序                                                                          202 

11 4选择第 k小的数                                                                                  203 

11 5寻找最小割边                                                                                      206 

11 6小结                                                                                                   209 课后习题                                                                                                      209

第 12章算法复杂度                                                                                         210 

12 1引言                                                                                                   210 

12 2问题的分类                                                                                         210 

12 2 1易解与难解                                                                             210 

12 2 2无解的问题                                                                             211 

12 2 3难解问题的证明                                                                       213 

12 3 NPC问题应用                                                                                    214 

12 3 1决策问题                                                                                 214 

12 3 2问题的化约                                                                             215 

12 3 3 NP问题                                                                                  215 

12 3 4 NPC问题                                                                               216 

12 4 P等于 NP吗                                                                                      218 

12 5小结                                                                                                   219 课后习题                                                                                                      219 索引                                                                                                                    221 代码列表                                                                                                             222 参考文献                                                                                                             226