算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现,有了
这个思路后,编程工作只需遵循这个思路去实现即可。本书循序渐进、由浅入深地详细讲解了
算法实现的核心技术,全书共12章,分别讲解了初步认识算法思想,枚举算法思想,递归算法
思想,分治算法思想,贪心算法思想,回溯算法思想,迭代算法思想,查找算法,排序算法,
使用算法解决数据结构问题,解决数学问题,经典算法问题。全书通过具体实例的实现过程演
练了各个知识点的具体使用流程,引领读者全面掌握算法的核心技术。
第 1 章 初步认识算法思想
1.1 什么是算法 1
1.2 算法是程序的灵魂 3
1.3 算法的表示方法 4
1.4 Python 算法思想 6
第 2 章 枚举算法思想
2.1 枚举算法基础 11
2.2 算法演练——找出符合条件的 5 位数 12
2.3 算法演练——24 点游戏 .13
2.4 算法演练——解决熄灯问题 .19
2.5 算法演练——解决“讨厌的青蛙”问题 .23
第 3 章 递归算法思想
3.1 递归算法思想基础 27
3.2 算法演练——解决“斐波那契数列”问题 .28
3.3 算法演练——解决“汉诺塔”问题 .29
3.4 算法演练——解决“阶乘”问题 .32
3.5 算法演练——进制转换器 .33
3.6 算法演练——分解数字 .34
3.7 算法演练——解决二叉树遍历问题 .34
3.8 算法演练——最大公约数和最小公倍数 .38
第 4 章 分治算法思想
4.1 分治算法思想基础 41
4.2 算法演练——二分法找出有序列表指定值 .43
4.3 算法演练——求顺序表中数据的最大值 .45
4.4 算法演练——查找列表中元素的最小值和最大值 .46
4.5 算法演练——找出一组序列中的第 k 小(大)的元素 .48
4.6 算法演练——快速排序 .51
4.7 算法演练——实现归并排序 .53
4.8 算法演练——整数划分 .54
第 5 章 贪心算法思想
5.1 贪心算法思想基础 57
5.2 算法演练——解决“找零方案”问题 .58
5.3 算法演练——解决“汽车加油”问题 .59
5.4 算法演练——解决“求最大子元素之和问题”问题 .60
5.5 算法演练——解决“幼儿园分糖果”问题 .61
5.6 算法演练——圣诞节的礼物 .62
5.7 算法演练——解决“活动安排”问题 .64
5.8 算法演练——解决“摇摆序列”问题 .67
5.9 算法演练——移除 k 个数字 .69
5.10 算法演练——四种解决“霍夫曼编码”问题的方案 .70
5.11 算法演练——解决“Kruskal 算法”问题 .78
5.12 算法演练——解决“Prim 算法”问题 85
5.13 小结 89
第 6 章 回溯算法思想
6.1 回溯算法思想基础 90
6.2 算法演练——破解“解空间” .92
6.3 算法演练——解决“全排列”问题 .95
6.4 算法演练——解决“选排列”问题 .97
6.5 算法演练——解决“最长公共子序列(LCS)”问题 .99
6.6 算法演练——解决“排课”问题 .101
6.7 算法演练——解决“最佳作业调度”问题 .103
6.8 算法演练——解决“图的遍历”问题 .106
6.9 算法演练——解决“爬楼梯”问题 .107
6.10 算法演练——解决“m 着色”问题 .109
6.11 算法演练——解决“取物搭配”问题 . 111
6.12 算法演练——解决“旅行商”问题 . 112
6.13 算法演练——解决“野人与传教士”问题 . 114
6.14 算法演练——解决“骑士巡逻”问题 . 116
6.15 算法演练——解决“八皇后”问题的 4 种方案 . 118
6.16 算法演练——解决“迷宫”问题 .127
第 7 章 迭代算法思想
7.1 迭代算法思想基础 132
7.2 算法演练——解决“斐波那契数列”问题 .133
7.3 算法演练——解决“角谷猜想”问题 .134
7.4 算法演练——使用牛顿迭代法计算方程的根 .135
7.5 算法演练——使用牛顿迭代法求极值 .136
7.6 算法演练——使用牛顿迭代法求平方根 .138
7.7 算法演练——使用牛顿迭代法求极值并绘制曲线 .140
7.8 算法演练——使用牛顿迭代法求解输入的方程 .142
7.9 算法演练——求方程在 x 附近的一个实根 .144
7.10 算法演练——解决“非线程方程组”问题 .144
7.11 算法演练——使用雅克比 (Jacobi) 迭代法求解线性方程组 146
7.12 算法演练——使用 Gauss-Seidel 迭代法求解线性方程组148
第 8 章 查找算法
8.1 查找算法基础 153
8.2 线性表查找:顺序查找 154
8.3 线性表查找:折半查找算法 157
8.4 线性表查找:插值查找算法 161
8.5 线性表查找:分块查找算法 162
8.6 基于树的查找法:二叉排序树算法 167
8.7 基于树的查找法:平衡二叉排序树算法 173
8.8 哈希查找算法 182
8.9 斐波那契查找算法 188
8.10 红黑树(Red-Black Tree)查找算法 .192
第 9 章 排序算法
9.1 排序基础 202
9.2 插入排序算法 203
9.3 希尔排序 208
9.4 交换类排序:冒泡排序算法 211
9.5 交换类排序:快速排序算法 215
9.6 选择排序算法 217
9.7 堆排序算法 222
9.8 归并排序算法 228
9.9 基数排序算法 236
9.10 综合比较各种排序方法 239
第 10 章 使用算法解决数据结构问题
10.1 约瑟夫环 241
10.2 操作顺序表 244
10.3 操作链表 246
10.4 带有尾结点引用的单链表 248
10.5使用多叉树寻找最短路径 250
10.6树操作 251
第 11 章 解决数学问题
11.1 一段神奇的字符 260
11.21000 以内的完全数 .261
11.3多进程验证哥德巴赫猜想 263
11.4 亲密数 266
11.5解决自守数问题 267
11.6矩阵运算 267
11.7一元多项式运算 269
11.8素数问题 271
第 12 章 经典算法问题
12.1借书方案 279
12.2捕鱼和分鱼 280
12.3出售金鱼 281
12.4平分七筐鱼 282
12.5五家共井问题 283
12.6三色球问题 284
12.7计算年龄 285
12.8常胜将军问题 287
12.9三色旗问题 288