你也能看得懂的Python算法书

你也能看得懂的Python算法书

作者:王硕,董文馨,张舒行,张洁 著

出版社:电子工业出版社

出版年:2018-11-1

评分:5.8

ISBN:9787121352553

所属分类:行业好书

书刊介绍

作品目录

第1章 编程基础 1
1.1 变量 1
1.1.1 输出和输入 2
1.1.2 简单变量类型 3
1.1.3 数学计算 6
1.1.4 位运算 7
1.1.5 使用字符串 11
1.2 三大结构 15
1.2.1 循序结构 15
1.2.2 分支结构 16
1.2.3 条件判断 18
1.2.4 应用分支结构 20
1.2.5 循环结构 21
1.2.6 continue和break 23
1.2.7 应用循环结构 24
1.2.8 结构的嵌套 26
1.3 列表 27
1.3.1 定义列表 27
1.3.2 对元素进行操作 28
1.3.3 列表的顺序 31
1.3.4 列表内置函数 33
1.3.5 截取和拼接列表 36
1.3.6 字符串、元组和列表 38
1.3.7 用循环遍历列表 40
1.3.8 字典简介 41
1.4 函数 43
1.4.1 定义子函数 43
1.4.2 主函数 44
1.4.3 调用函数 45
1.4.4 全局变量 47
1.4.5 函数的运用 48
第2章 双指针问题 53
2.1 数组合并 53
2.1.1 合并有序数组 53
2.1.2 最终代码 56
2.2 二分查找 56
2.2.1 什么是二分查找 57
2.2.2 问题求解 58
2.2.3 最终代码 60
2.3 链表 60
2.3.1 什么是单链表 60
2.3.2 建立单链表 61
2.3.3 建立双链表 63
2.3.4 双向输出双链表 65
2.3.5 向单链表中添加元素 66
2.3.6 向双链表中添加元素 69
2.3.7 删除列表中的元素 71
第3章 哈希算法 75
3.1 什么是哈希 75
3.2 两个数的和 78
3.2.1 问题求解1 78
3.2.2 解法1的最终代码 80
3.2.3 问题求解2 81
3.2.4 解法2的最终代码 82
3.3 单词模式匹配 82
3.3.1 问题求解 83
3.3.2 最终代码 85
3.4 猜词游戏 85
3.4.1 问题求解 87
3.4.2 最终代码 88
3.5 神奇的词根 89
3.5.1 问题求解 90
3.5.2 最终代码 92
第4章 深度优先遍历算法 93
4.1 什么是深度优先遍历 93
4.2 二叉树 95
4.2.1 二叉树的类型 95
4.2.2 二叉树的相关术语 96
4.2.3 二叉树的节点代码 97
4.2.4 二叉树的遍历顺序 97
4.2.5 深度优先遍历与广度优先遍历 97
4.3 怎么抓住小偷 98
4.3.1 解题思路 98
4.3.2 从思路到代码 102
4.4 二叉树中的最大路径和 102
4.4.1 解题思路 103
4.4.2 完整代码 112
4.5 最大的岛屿 113
4.5.1 解题思路 113
4.5.2 完整代码 116
第5章 广度优先遍历算法 118
5.1 什么是广度优先遍历 118
5.2 选课的智慧 120
5.2.1 广度优先遍历 121
5.2.2 问题求解 122
5.2.3 最终代码 124
5.3 寻找制高点 125
5.3.1 问题求解 126
5.3.2 集合 129
5.3.3 最终代码 130
5.4 合法的括号 131
5.4.1 问题求解 131
5.4.2 最终代码 135
5.5 树的右侧 136
5.5.1 问题求解 136
5.5.2 最终代码 139
第6章 回溯算法 141
6.1 什么是回溯 141
6.2 遍历所有排序方式 142
6.2.1 问题求解 142
6.2.2 最终代码 144
6.3 经典问题的组合 147
6.3.1 问题求解 147
6.3.2 最终代码 149
6.4 查找单词问题 151
6.4.1 问题求解 152
6.4.2 最终代码 155
6.5 八皇后问题 157
6.5.1 问题求解 158
6.5.2 最终代码 160
6.6 教你解数独 164
6.6.1 问题求解 165
6.6.2 最终代码 168
第7章 贪心算法 172
7.1 硬币找零问题 173
7.1.1 问题描述 173
7.1.2 最终代码 175
7.2 活动安排问题 175
7.2.1 问题描述 176
7.2.2 最终代码 177
7.3 哈夫曼编码 178
7.3.1 问题描述 178
7.3.2 哈夫曼树 179
7.3.3 贪心选择性质 181
7.3.4 最优子结构性质 182
7.3.5 最终代码 183
第8章 动态规划算法 185
8.1 爬楼梯问题 185
8.1.1 问题描述 186
8.1.2 最终代码 188
8.2 矿工挖矿问题 189
8.2.1 问题描述 189
8.2.2 最终代码 195
8.3 背包问题 195
8.3.1 问题描述 195
8.3.2 问题实例 196
8.3.3 最终代码 201
8.4 最长递归子序列问题 202
8.4.1 问题描述 202
8.4.2 改进算法 204
8.4.3 最终代码 205
第9章 最短路径问题 207
9.1 迪可斯特朗算法 207
9.1.1 术语释义 208
9.1.2 问题示例:最短公交线路 208
9.1.3 图与节点的定义 209
9.1.4 把图用代码“画”出来 210
9.1.5 算法核心:两个节点集合 210
9.1.6 算法核心:循环 210
9.1.7 输出路线 211
9.1.8 通过示例理解算法 211
9.1.9 完整代码展示 214
9.2 Floyd算法 216
9.2.1 算法核心:两个矩阵 216
9.2.2 算法核心:通过中介点缩短距离 217
9.2.3 通过示例理解算法 218
9.2.4 完整代码 222
9.3 A*算法 223
9.3.1 算法核心:迪可斯特朗算法 223
9.3.2 算法核心:预估函数 224
9.3.3 算法核心:选择预估函数 226
9.3.4 A*算法的兄弟们 226
第10章 分治算法 227
10.1 什么是分治 227
10.2 归并排序 228
10.2.1 递归法与迭代法 228
10.2.2 递归法描述 229
10.2.3 迭代法描述 232
10.2.4 最终代码 233
10.3 连续子列表的最大和 235
10.3.1 解题思路 235
10.3.2 最终代码 237
10.4 几何问题之凸包 238
10.4.1 问题求解 238
10.4.2 最终代码 240
10.5 数学问题之多项式乘法 242
10.5.1 问题求解 242
10.5.2 最终代码 245
· · · · · ·

精彩摘录

顺序查找是最简单的查找方式,需要对数据集中的数据逐个进行匹配,所以效率相对较低,不太适合大数据量的查找问题。二分查找的查找效率很高,但是要求数据必须有序,而对数据排序通常需要更多的时间开销。深度优先遍历、广度优先遍历对于大数据量的查找问题效率并不高。哈希查找算法由于其查找速度快,查询、插入、删除操作简单等原因而获得了广泛的应用。很多问题本质上都是査找问题。解决査找问题,哈希算法是较好的选择。

——引自章节:3.1什么是哈希75


树有几个特殊的类型:空二树、满二叉树、完全二叉树、完美二叉树、平衡二叉树。空二叉树有零个节点。完美二又树(PerfectBinaryTree),每一层的节都是满的。满二叉树(FullBinaryTree),每一个节点都有零或两个子节点,也就是说,没有只有一个子节点的节点,国内对满二树和完美二叉树的定义是一样的,本文按照国外定义。完全二树(CompleteBinaryTree),除了最后一层,每一层的节点都满的,并且最后一层的节点全部从左排序。平衡二叉树:每个节点的两个子树深度相差不超过1。

——引自章节:4.2.1二叉树的类型95

相关推荐

微信二维码