《Python数据结构与算法分析(第2版)》是一本值得推荐的书籍,这本书以Python语言为主题,重点介绍了数据结构和算法分析的内容,它将编写代码比喻为沙场厮杀,强调了在战场上独占鳌头的重要性,而要在编程领域取得成功,光靠手上的尖刀是不够的,还需要掌握深入的古语,即数据结构和优化算法,只有通读古语,才能让尖刀无坚不摧,这本书在帮助读者理解Python语言的也注重了数据结构和算法知识的讲解,使读者能够在编程实践中做到既有技术基础又有理论支持,这本书对于想要提升编程能力和深入学习算法的读者来说,是一本很好的参考资料。
若把撰写代码比成急行军打战,那麼要想独霸战场,不可以光靠手上的尖刀,还需深得古语。Python是一把尖刀,数据结构与优化算法则是古语。只能通读古语,才可以使尖刀无坚不摧。
本书是用Python叙述数据结构与优化算法的劈山之作,聚集了创作者很多年的项目经验。根据学习培训这书,你将把握数据结构与优化算法的基础观念,进而有自信心探寻一切编译程序难点的解决方案。 - 应用Python保持栈、序列、目录等抽象数据类型 - 把握大O记法和时间复杂度等定义 - 运用递归处理汉诺塔问题 - 保持常见的搜索算法和排序算法,并剖析特性 - 把握树与图在Python中的运用 书籍每章內容常有配套设施训练,协助你尽快把握所教內容; 对于Python新版本全新升级重做,全部的代码全是应用Python3.x写出; 将全部的数据结构源代码都放到一个Python包中,便捷用户在进行工作时应用; 有关配套设施資源请至图灵社区免费下载。
掌握数据结构与优化算法是明白了解电子信息科学的前提条件。伴随着Python日渐普遍的运用,Python程序猿必须保持与传统式的面向对象编程言语类似的数据结构与优化算法。这书是用Python叙述数据结构与优化算法的劈山之作,聚集了创作者很多年的项目经验,向用户明白解读在Python自然环境下,怎样根据一系列储存体制高效率地保持各种优化算法。根据这书,用户将深刻领会Python数据结构、递归、检索、排列、树与图的运用,这些。
目录
- 第1章 导论 1
- 1.1 本章目标 1
- 1.2 入门 1
- 1.3 何谓计算机科学 1
- 1.3.1 何谓编程 3
- 1.3.2 为何学习数据结构及抽象数据类型 4
- 1.3.3 为何学习算法 4
- 1.4 Python基础 5
- 1.4.1 数据 5
- 1.4.2 输入与输出 16
- 1.4.3 控制结构 18
- 1.4.4 异常处理 21
- 1.4.5 定义函数 23
- 1.4.6 Python面向对象编程:定义类 24
- 1.5 小结 37
- 1.6 关键术语 38
- 1.7 讨论题 38
- 1.8 编程练习 38
- 第 2章 算法分析 40
- 2.1 本章目标 0
- 2.2 何谓算法分析 40
- 2.2.1 大O记法 43
- 2.2.2 异序词检测示例 46
- 2.3 Python数据结构的性能 49
- 2.3.1 列表 49
- 2.3.2 字典 53
- 2.4 小结 55
- 2.5 关键术语 55
- 2.6 讨论题 56
- 2.7 编程练习 56
- 第3章 基本数据结构 57
- 3.1 本章目标 57
- 3.2 何谓线性数据结构 57
- 3.3 栈 58
- 3.3.1 何谓栈 58
- 3.3.2 栈抽象数据类型 59
- 3.3.3 用Python实现栈 60
- 3.3.4 匹配括号 62
- 3.3.5 普通情况:匹配符号 64
- 3.3.6 将十进制数转换成二进制数 65
- 3.3.7 前序、中序和后序表达式 67
- 3.4 队列 75
- 3.4.1 何谓队列 75
- 3.4.2 队列抽象数据类型 75
- 3.4.3 用Python实现队列 76
- 3.4.4 模拟:传土豆 77
- 3.4.5 模拟:打印任务 79
- 3.5 双端队列 84
- 3.5.1 何谓双端队列 84
- 3.5.2 双端队列抽象数据类型 84
- 3.5.3 用Python实现双端队列 85
- 3.5.4 回文检测器 86
- 3.6 列表 88
- 3.6.1 无序列表抽象数据类型 88
- 3.6.2 实现无序列表:链表 89
- 3.6.3 有序列表抽象数据类型 97
- 3.6.4 实现有序列表 97
- 3.7 小结 100
- 3.8 关键术语 101
- 3.9 讨论题 101
- 3.10 编程练习 102
- 第4章 递归 105
- 4.1 本章目标 105
- 4.2 何谓递归 105
- 4.2.1 计算一列数之和 105
- 4.2.2 递归三原则 107
- 4.2.3 将整数转换成任意进制的字符串 108
- 4.3 栈帧:实现递归 110
- 4.4 递归可视化 111
- 4.5 复杂的递归问题 116
- 4.6 探索迷宫 118
- 4.7 动态规划 123
- 4.8 小结 128
- 4.9 关键术语 129
- 4.10 讨论题 129
- 4.11 编程练习 129
- 第5章 搜索和排序 131
- 5.1 本章目标 131
- 5.2 搜索 131
- 5.2.1 顺序搜索 131
- 5.2.2 二分搜索 134
- 5.2.3 散列 136
- 5.3 排序 145
- 5.3.1 冒泡排序 145
- 5.3.2 选择排序 147
- 5.3.3 插入排序 149
- 5.3.4 希尔排序 151
- 5.3.5 归并排序 153
- 5.3.6 快速排序 156
- 5.4 小结 159
- 5.5 关键术语 160
- 5.6 讨论题 160
- 5.7 编程练习 161
- 第6章 树 163
- 6.1 本章目标 163
- 6.2 示例 163
- 6.3 术语及定义 166
- 6.4 实现 168
- 6.4.1 列表之列表 168
- 6.4.2 节点与引用 171
- 6.5 二叉树的应用 173
- 6.5.1 解析树 173
- 6.5.2 树的遍历 179
- 6.6 利用二叉堆实现优先级队列 182
- 6.6.1 二叉堆的操作 182
- 6.6.2 二叉堆的实现 183
- 6.7 二叉搜索树 189
- 6.7.1 搜索树的操作 190
- 6.7.2 搜索树的实现 190
- 6.7.3 搜索树的分析 201
- 6.8 平衡二叉搜索树 202
- 6.8.1 AVL树的性能 203
- 6.8.2 AVL树的实现 204
- 6.8.3 映射实现总结 210
- 6.9 小结 211
- 6.10 关键术语 211
- 6.11 讨论题 211
- 6.12 编程练习 213
- 第7章 图及其算法 214
- 7.1 本章目标 214
- 7.2 术语及定义 215
- 7.3 图的抽象数据类型 216
- 7.3.1 邻接矩阵 216
- 7.3.2 邻接表 217
- 7.3.3 实现 218
- 7.4 宽度优先搜索 220
- 7.4.1 词梯问题 220
- 7.4.2 构建词梯图 221
- 7.4.3 实现宽度优先搜索 223
- 7.4.4 分析宽度优先搜索 226
- 7.5 深度优先搜索 226
- 7.5.1 骑士周游问题 226
- 7.5.2 构建骑士周游图 227
- 7.5.3 实现骑士周游 229
- 7.5.4 分析骑士周游 231
- 7.5.5 通用深度优先搜索 233
- 7.5.6 分析深度优先搜索 236
- 7.6 拓扑排序 236
- 7.7 强连通单元 238
- 7.8 最短路径问题 241
- 7.8.1 Dijkstra算法 243
- 7.8.2 分析Dijkstra算法 245
- 7.8.3 Prim算法 245
- 7.9 小结 248
- 7.10 关键术语 249
- 7.11 讨论题 249
- 7.12 编程练习 250
- 第8章 附加内容 251
- 8.1 本章目标 251
- 8.2 复习Python列表 251
- 8.3 复习递归 256
- 8.3.1 同余定理 257
- 8.3.2 幂剩余 257
- 8.3.3 最大公因数与逆元 258
- 8.3.4 RSA算法 261
- 8.4 复习字典:跳表 264
- 8.4.1 映射抽象数据类型 265
- 8.4.2 用Python实现字典 265
- 8.5 复习树:量化图片 274
- 8.5.1 数字图像概述 274
- 8.5.2 量化图片 275
- 8.5.3 使用八叉树改进量化算法 277
- 8.6 复习图:模式匹配 284
- 8.6.1 生物学字符串 285
- 8.6.2 简单比较 285
- 8.6.3 使用图:DFA 287
- 8.6.4 使用图:KMP 288
- 8.7 小结 291
- 8.8 关键术语 291
- 8.9 讨论题 291
- 8.10 编程练习 292
- 附录A Python图形包 293
- 附录B Python资源 294
- 参考资料295