E-BOOK Python数据结构与算法分析(第3版) 布拉德利·N.米勒(Bradley N.Miller) Python数据结构与算法分析(第3版)

Python数据结构与算法分析(第3版)

👤 布拉德利·N.米勒(Bradley N.Miller) 📖 人民邮电出版社 📋 9787115623348 🌐 zh-CN
10
下载次数
4.8
用户评分

📦 下载本书

  • 算法分析入门难:通过大O记法、时间复杂度等概念的系统讲解,帮助读者理解如何评估算法效率,摆脱凭感觉写代码的困境。
  • 数据结构理解不透:用Python从零实现栈、队列、列表等数据结构,结合应用场景(如括号匹配、打印任务模拟),让抽象概念变得具体可感。
  • 递归思维欠缺:从递归的基本原理讲到汉诺塔、分形等经典案例,配合可视化示例,逐步培养递归思考问题的能力。
  • 排序搜索算法混淆:对比多种搜索与排序算法的实现和性能,配合异序词检测等实例,帮助读者掌握算法选型与优化的方法。
  • 树与图应用不熟:通过二叉堆、二叉搜索树、图遍历等内容的实战演练,解决树和图在Python中的建模与算法实现难题。
★★★
中级
入门初级中级进阶高级
  • Python初学者:已掌握Python基础语法,希望系统学习数据结构与算法,提升编程内功。
  • 计算机专业学生:正在学习数据结构课程,需要一本用Python语言讲解的实用教材作为参考。
  • 转行程序员:从其他语言转向Python,希望弥补算法与数据结构知识,增强求职竞争力。
  • 自学者:对算法感兴趣,愿意通过动手实践和案例学习来提升编程解决问题的能力。
  1. 先修基础:建议先熟悉Python基本语法(变量、循环、函数、类),再开始阅读第1章,可快速上手。
  2. 重点章节:第2章算法分析和第4章递归是全书核心,务必反复研读并完成练习,为后续内容打基础。
  3. 动手实践:每章代码示例务必亲手敲一遍,并尝试修改参数观察结果,加深理解。
  4. 配合练习:每章末尾的练习题是巩固知识的关键,建议至少完成一半以上题目。
  5. 拓展延伸:学完第7章图算法后,可结合LeetCode等平台刷题,将理论应用于实际。
  • 算法分析能力:掌握大O记法,能够评估和比较不同算法的效率,做出合理选型。
  • 数据结构实现:熟练用Python实现栈、队列、链表、树、图等常用数据结构,理解其内部机制。
  • 递归思维:学会用递归解决汉诺塔、排列组合等经典问题,提升问题分解能力。
  • 排序搜索精通:掌握多种排序和搜索算法的原理、实现与性能差异,能根据场景灵活运用。
  • 树与图应用:理解二叉搜索树、堆、图遍历等高级数据结构,为解决复杂问题打下基础。
  • 实战信心:通过大量案例和练习,建立解决编程难题的信心,敢于挑战更复杂的项目。

📖 书籍简介

产品特色

编辑推荐

1.若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。

2.本书作者在计算机科学领域深耕数十载,积累了丰富的实战经验。通过学习本书,你将掌握数据结构与算法的基本思想,从而有信心探索任何编程难题的解决方法。

3.内容系统完善,逻辑清晰。不仅能让你学会用Python实现栈、队列、列表等数据结构,掌握大O记法和时间复杂度等概念,利用递归解决汉诺塔问题,还能实现常用的搜索算法和排序算法,并分析性能,掌握树与图在Python中的应用。

4.与第2版相比,第3版不仅对过时的内容进行了更新,还采用了PEP 8 Python编程规范,并对代码进行了重写,引入了pythonds3包等。


内容简介

了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。本书是用Python描述数据结构与算法的开山之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制有效地实现各类算法。通过本书,读者将深刻理解Python数据结构、递归、搜索、排序、树与图的应用,等等。这一版重写了书中的示例代码,并对诸多内容做了修正。

作者简介

[美] 布拉德利.N. 米勒(Bradley N. Miller)美国路德学院计算机科学名誉教授,曾获美国计算机协会软件系统奖,对Python课程开发有深入研究,由他创立的互动式教科书平台Runestone Interactive与全球600多家教育机构有合作。


[美] 戴维.L. 拉努姆(David L. Ranum)

Merative高级科学家,医学信息学博士,致力于利用自然语言处理等人工智能技术解决医疗问题,曾在美国路德学院讲授计算机科学课程近三十载。


[乌] 罗曼.亚西诺夫斯基(Roman Yasinovskyy)

美国路德学院计算机科学系主任、副教授,授课范围涵盖算法、Web开发、计算机网络、数据库管理系统、操作系统、计算机体系结构以及信息安全等课程。博士毕业于陶森大学应用信息技术专业。


精彩书评

本书是一本优质的Python指南,透彻讲解了在Python环境下实现各类有效算法的方法。作者凝聚多年实战经验,将数据结构、递归、搜索、排序、树与图等内容生动呈现。对于所有Python程序员,本书是在Python基础上学习数据结构与算法的优秀资源,值得一读。

——崔庆才,微软(中国)工程师,《Python 3网络爬虫开发实战》作者


我一直采用本书原版教材讲授数据结构与算法课程,很高兴看到本书中文版第3版出版,让更多学生能够无障碍阅读这本优秀的教材。本书采用Python语言,深入浅出地介绍了常用的数据结构及算法,语言使用规范,案例丰富,应用情境取材广泛,很有启发性。在多年的教学实践中,本书深受学生欢迎,相信它能帮助更多Python学习者提升算法能力。

——陈斌,北京大学地球与空间科学学院教授,北京市高等学校教学名师


目录

前言    iii

第 1章 导论    1

1.1 本章目标    1

1.2 入门    1

1.3 何谓计算机科学    1

1.3.1 何谓编程    3

1.3.2 为何学习数据结构及抽象数据类型    4

1.3.3 为何学习算法    5

1.4 Python基础    5

1.4.1 数据    6

1.4.2 输入与输出    16

1.4.3 控制结构    20

1.4.4 异常处理    23

1.4.5 定义函数    25

1.4.6 Python面向对象编程:定义类    26

1.5 小结    39

1.6 关键术语    40

1.7 练习    40

第 2章 算法分析    42

2.1 本章目标    42

2.2 何谓算法分析    42

2.2.1 大O记法    45

2.2.2 异序词检测示例    48

2.3 Python数据结构的性能    51

2.3.1 列表    51

2.3.2 字典    56

2.4 小结    57

2.5 关键术语    57

2.6 练习    58

第3章 基本数据结构    59

3.1 本章目标    59

3.2 何谓线性数据结构    59

3.3 栈    60

3.3.1 栈抽象数据类型    61

3.3.2 用Python实现栈    62

3.3.3 匹配括号    64

3.3.4 通用问题:符号匹配    66

3.3.5 将十进制数转换成二进制数    67

3.3.6 前序、中序和后序表达式    69

3.4 队列    77

3.4.1 队列抽象数据类型    78

3.4.2 用Python实现队列    78

3.4.3 队列模拟:传土豆    80

3.4.4 队列模拟:打印任务    81

3.4.5 双端队列    87

3.5 双端队列抽象数据类型    87

3.5.1 用Python实现双端队列    88

3.5.2 回文检测器    89

3.6 列表    91

3.6.1 无序列表抽象数据类型    91

3.6.2 实现无序列表:链表    92

3.6.3 有序列表抽象数据类型    100

3.6.4 实现有序列表    101

3.7 小结    104

3.8 关键术语    104

3.9 练习    105

第4章 递归    108

4.1 本章目标    108

4.2 何谓递归    108

4.2.1 计算一列数之和    108

4.2.2 递归三原则    111

4.2.3 将整数转换成任意进制的字符串    111

4.3 栈帧:实现递归    113

4.4 可视化递归    115

4.5 复杂的递归问题    120

4.6 探索迷宫    123

4.7 动态规划    128

4.8 小结    134

4.9 关键术语    134

4.10 练习    134

第5章 搜索和排序    137

5.1 本章目标    137

5.2 搜索    137

5.2.1 顺序搜索    137

5.2.2 二分搜索    140

5.2.3 散列    142

5.3 排序    151

5.3.1 冒泡排序    151

5.3.2 选择排序    154

5.3.3 插入排序    156

5.3.4 希尔排序    158

5.3.5 归并排序    160

5.3.6 快速排序    163

5.4 小结    166

5.5 关键术语    167

5.6 练习    167

第6章 树及其算法    170

6.1 本章目标    170

6.2 示例    170

6.3 术语及定义    173

6.4 实现    175

6.4.1 列表之列表    175

6.4.2 节点与引用    178

6.5 二叉树的应用    180

6.5.1 解析树    180

6.5.2 树的遍历    186

6.6 利用二叉堆实现优先级队列    190

6.6.1 二叉堆的操作    190

6.6.2 二叉堆的实现    191

6.7 二叉搜索树    198

6.7.1 搜索树的操作    198

6.7.2 搜索树的实现    198

6.7.3 搜索树的分析    209

6.8 平衡二叉搜索树    210

6.8.1 AVL树的性能    211

6.8.2 AVL树的实现    212

6.8.3 映射实现总结    219

6.9 小结    219

6.10 关键术语    219

6.11 练习    220

第7章 图及其算法    223

7.1 本章目标    223

7.2 术语及定义    224

7.3 图的抽象数据类型    225

7.3.1 邻接矩阵    226

7.3.2 邻接表    227

7.3.3 实现    227

7.4 广度优先搜索    230

7.4.1 词梯问题    230

7.4.2 构建词梯图    230

7.4.3 实现广度优先搜索    232

7.4.4 分析广度优先搜索    235

7.5 深度优先搜索    236

7.5.1 骑士周游问题    236

7.5.2 构建骑士周游图    236

7.5.3 实现骑士周游    238

7.5.4 分析骑士周游    241

7.5.5 通用深度优先搜索    242

7.5.6 分析深度优先搜索    245

7.6 拓扑排序    246

7.7 强连通分量    247

7.8 最短路径问题    250

7.8.1 Dijkstra算法    252

7.8.2 分析Dijkstra算法    254

7.8.3 Prim算法    254

7.9 小结    258

7.10 关键术语    259

7.11 练习    259

第8章 进阶算法    261

8.1 本章目标    261

8.2 复习Python列表    261

8.3 复习递归    266

8.3.1 同余定理    267

8.3.2 幂剩余    267

8.3.3 最大公因数与逆元    268

8.3.4 RSA算法    271

8.4 复习字典:跳表    275

8.4.1 映射抽象数据类型    276

8.4.2 用Python实现字典    276

8.5 复习树:量化图片    285

8.5.1 数字图像概述    285

8.5.2 量化图片    286

8.5.3 使用八叉树改进量化算法    288

8.6 复习图:模式匹配    296

8.6.1 生物学字符串    296

8.6.2 简单比较    297

8.6.3 图算法:DFA    298

8.6.4 图算法:KMP    300

8.7 小结    302

8.8 关键术语    303

8.9 练习    303

参考资料    305

版权声明    306

📑 章节目录

  1. 导论:计算机科学基础与Python快速回顾
  2. 算法分析:大O记法与Python数据结构的性能
  3. 基本数据结构:栈、队列、双端队列的实现与应用
  4. 递归:原理、可视化与经典问题(汉诺塔、分形)
  5. 排序与搜索:冒泡、选择、插入、希尔、归并、快速排序及二分搜索
  6. 树与树算法:树的遍历、二叉堆、二叉搜索树与平衡树
  7. 图与图算法:图的表示、遍历、最短路径与最小生成树
  8. 哈希与映射:散列函数、冲突解决与字典实现
  9. 高级排序与算法设计:分治、贪心与动态规划入门
  10. 综合项目实战:结合数据结构解决实际问题