目 录
第1篇
常用算法的原理、实现与优化
第1章 算法分析与设计基础 ...................................002
1.1 基本概念 ...................................................002
1.2 算法复杂度指标 ..............................................003
1.2.1 时间复杂度 ...........................................003
1.2.2 测量程序运行时间和空间使用情况 ........................005
1.3 算法优化常用思路 ............................................008
1.3.1 算法层面优化 .........................................008
1.3.2 代码层面优化 .........................................010
习题 ............................................................013
第2章 枚举算法 ............................................017
2.1 数学类问题算法设计与应用 .....................................017
2.2 其他类问题算法设计与应用 .....................................031
习题 ............................................................037
第3章 解析算法 ............................................039
3.1 数学类问题算法设计与应用 .....................................039
3.2 物理类问题算法设计与应用 .....................................048
3.3 其他类问题算法设计与应用 .....................................053
习题 ............................................................061
第4章 递推与迭代算法 ......................................063
4.1 数学类问题算法设计与应用 .....................................063
4.2 其他类问题算法设计与应用 .....................................085
习题 ............................................................098
第5章 递归与回溯算法 ......................................101
5.1 数学类问题算法设计与应用 .....................................102
5.2 其他类问题算法设计与应用 .....................................105
5.3 尾递归优化 .................................................120
习题 ............................................................122
第6章 排序算法 ............................................124
6.1 排序算法的原理与实现 ........................................124
6.1.1 冒泡排序算法 .........................................124
6.1.2 选择排序算法 .........................................126
6.1.3 插入排序算法 .........................................128
6.1.4 侏儒排序算法 .........................................129
6.1.5 希尔排序算法 .........................................129
6.1.6 堆排序算法 ...........................................130
6.1.7 归并排序算法 .........................................131
6.1.8 快速排序算法 .........................................133
6.1.9 基数排序算法 .........................................134
6.1.10 计数排序算法 ........................................135
6.2 排序算法高级应用 ............................................138
习题 ............................................................147
第7章 查找算法 ............................................150
7.1 线性查找算法 ................................................150
7.2 二分法查找 .................................................159
习题 ............................................................162
第8章 贪心算法 ............................................164
8.1 找零钱问题 .................................................164
8.2 幼儿园加餐吃面包问题 ........................................165
8.3 汽车加油问题 ................................................166
8.4 区间合并问题 ................................................167
8.5 分数分解问题 ................................................167
8.6 若干数字中前后元素最大差问题 .................................169
8.7 活动安排问题 ................................................169
8.8 哈夫曼编码与解码 ............................................171
习题 ............................................................174
第9章 分治法 ..............................................176
9.1 方程近似根 .................................................176
9.2 任意数列的逆序数 ............................................177
9.3 大自然数相乘 ................................................180
9.4 若干整数的第k大元素 ........................................181
9.5 元素之和最大的连续子序列 .....................................186
9.6 二维平面距离最近的两个点 .....................................188
习题 ............................................................192
第10章 动态规划算法 .......................................193
10.1 斐波那契数列第n个数 .......................................194
10.2 找零钱问题 ................................................194
10.3 奖品收集问题 ...............................................197
10.4 0-1背包问题 ...............................................200
10.5 最长非递减子序列 ...........................................206
10.6 最长公共子序列 .............................................210
习题 ............................................................214
第2篇
算法在不同学科中的应用
第11章 数论算法 ...........................................216
11.1 进制转换 ..................................................216
11.2 最大公约数 ................................................217
11.3 素性检测 ..................................................219
11.4 大数乘法与多项式乘法 .......................................229
11.5 乘模逆、扩展欧几里得算法 ....................................234
11.6 中国剩余定理 ...............................................237
11.7 快速幂模算法 ...............................................239
11.8 水仙花数 ..................................................244
11.9 平方数与自守数 .............................................249
11.10 整数分解 .................................................251
习题 ............................................................259
第12章 线性代数算法 .......................................261
12.1 向量基本运算 ...............................................261
12.2 矩阵基本运算 ...............................................265
12.3 矩阵行列式、代数余子式、逆矩阵 ..............................269
习题 ............................................................275
第13章 概率论与随机过程算法 ................................277
13.1 概率论的基本概念 ...........................................277
13.2 算法应用案例解析 ...........................................279
习题 ............................................................288
第14章 益智游戏类算法 .....................................289
14.1 24点游戏 ..................................................289
14.2 蒙蒂霍尔悖论游戏 ...........................................290
14.3 寻宝游戏 ..................................................292
14.4 模拟发红包 ................................................297
14.5 聪明的尼姆游戏 .............................................298
14.6 抓狐狸游戏 ................................................299
14.7 确定旅游目的地 .............................................301
14.8 制作漂亮手链 ...............................................303
14.9 数字可达游戏 ...............................................304
14.10 电影院选座位问题 ..........................................307
14.11 数独游戏盘面生成与自动求解 .................................308
14.12 推理游戏 .................................................313
14.13 迷宫自动寻找最短路径 ......................................315
习题 ............................................................318
第15章 图论算法 ...........................................320
15.1 图的概念、表示、应用与可视化 ................................320
15.1.1 基本概念与应用场景 .................................320
15.1.2 图的表示方式 .......................................321
15.1.3 图的可视化 .........................................325
15.1.4 寻找人群中的明星 ...................................326
15.2 二叉树与多叉树节点遍历 ......................................326
15.3 通路、回路、最短路径 .......................................331
15.4 拓扑排序 ..................................................340
15.5 图着色问题 ................................................341
15.6 最小生成树 ................................................344
15.7 完美匹配 ..................................................346
15.8 最大流 ....................................................347
习题 ............................................................352
第16章 机器学习算法 .......................................353
16.1 线性回归算法原理与应用 ......................................353
16.1.1 线性回归算法原理 ...................................353
16.1.2 使用线性回归模型预测儿童身高 ........................355
16.2 协同过滤算法原理与电影推荐 ..................................357
16.3 朴素贝叶斯算法原理与应用 ....................................358
16.3.1 分类算法基本原理 ...................................358
16.3.2 使用朴素贝叶斯算法进行垃圾邮件分类 ...................359
16.4 分类算法与聚类算法 .........................................363
16.4.1 使用KNN算法判断交通工具类型 ........................363
16.4.2 使用K-Means算法压缩图像颜色 ........................365
16.4.3 DBSCAN算法原理与应用 ..............................368
16.5 关联规则分析算法原理与应用 ..................................370
16.5.1 基本概念与算法原理 .................................371
16.5.2 使用关联规则分析算法分析和预测演员关系 ...............371
习题 ............................................................375
第17章 计算机图形学算法 ....................................376
17.1 Bresenham直线生成算法 .....................................376
17.2 二维平面直线裁剪算法 .......................................379
17.2.1 Cohen-Sutherland裁剪算法 ..........................380
17.2.2 Liang-BarSky裁剪算法 ..............................384
17.3 求解点集的凸包 .............................................388
习题 ............................................................392
第18章 密码学算法 .........................................394
18.1 安全哈希算法 ...............................................394
18.2 对称密钥密码算法DES和AES ..................................395
18.3 非对称密钥密码算法RSA与数字签名算法DSA .....................397
18.3.1 RSA算法 ...........................................397
18.3.2 DSA算法 ...........................................400
习题 ............................................................401
参考文献 ...................................................402
