《你也能看得懂的Python算法书》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:王硕,董文馨,张舒行等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121352553
  • 页数:246 页
图书介绍:在这个互联网时代,我们每个人都在享受着互联网的便利,而会编程的人就是我们现在和未来世界的幕后搭建者。编程的核心是算法,学习算法不仅会教会你解法问题的方法,而且还为你今后的发展提供一种可能。本书面向算法初学者,首先介绍当下最流程的编程语言Python,详细讲解了Python语言的变量和顺序、分支、循环三大结构,以及列表和函数的使用,为之后学习算法打好基础。之后以通俗生动的语言讲解了双指针、哈希、深度优先、广度优先、回溯、贪心、动态规划和最短路径等经典算法。本书适合有一定编程基础读者阅读。同时适合计算机专业相关的大中院校学生,也适合机器学习、深度学习、人工智能相关从业者,作为深入学习的启蒙教材。

第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