新書推薦:

《
两种自由的追求
》
售價:HK$
54.8

《
通向财务自由之路:心理实战篇(珍藏版)
》
售價:HK$
108.9

《
许子东文集9:21世纪中国小说选读
》
售價:HK$
108.9

《
好望角系列·被遗忘的中美洲:革命、暴力与移民的根源
》
售價:HK$
118.8

《
先秦战争与政治地理格局:换个角度看历史,破解华夏战争密码
》
售價:HK$
85.8

《
付出就一定有收获吗?给孩子的聪明哲思绘本 全6册
》
售價:HK$
109.8

《
自主机器人导论
》
售價:HK$
87.8

《
何处为家:雪莉·哈扎德和唐纳德·基恩的书信情谊
》
售價:HK$
96.8
|
編輯推薦: |
《Python 数据结构与算法(第 3 版)》—— 从入门到实战,解锁高效编程的底层逻辑!
还在为复杂数据处理效率发愁?想掌握大厂的算法思维?这本书就是你的通关密钥!
? 为什么选择这本书?
? 零基础友好,系统构建知识体系:从 Python 基础数据类型到链表、树、图等复杂结构,从冒泡排序到 KMP 算法,由浅入深拆解核心概念,搭配「文字讲解 图形示例 代码实战」三维解析,即使是新手也能轻松理解算法逻辑与数据结构设计原理。
? 聚焦实战,拒绝纸上谈兵:每章配备真实场景案例(如栈在表达式求值中的应用、图算法在路径规划中的实践),结合 Python 3.10 代码实现,直接套用解决业务问题。书中更提供可运行的代码片段和练习答案,边学边练,快速积累项目经验。
? 覆盖大厂高频考点,助力职业进阶:深度解析动态规划、分治法、贪婪算法等大厂面试必问的设计范式,详解排序、搜索、字符串匹配等核心算法的时间空间复杂度,帮你突破「算法难」瓶颈,从容应对技术面试。
? 附赠资源,拓展学习边界:免费获取树算法扩展内容,结合书中对哈希表冲突解决、图的最小生成树等进阶内容的剖析,一站式掌握从基础到高
|
內容簡介: |
《Python 数据结构与算法(第 3 版)》是一本面向初级及中级 Python 开发者与学生的专业技术书籍,聚焦数据结构与算法在 Python 中的实战应用。书中系统介绍了 Python 基础数据类型(如数值、布尔、序列、字典、集合)及集合模块(命名元组、双端队列等),深入解析链表、栈、队列、树、堆、哈希表、图等核心数据结构的原理与实现,并涵盖冒泡排序、快速排序、二分搜索、KMP 算法等经典算法的原理、Python 代码实现及性能分析。
來源:香港大書城megBookStore,http://www.megbook.com.hk 全书以 “理论 案例 实操” 为框架:通过对比数组与链表的特性、演示树的遍历逻辑、图解图的最小生成树算法等,帮助读者理解复杂概念;结合动态规划、分治法、贪婪算法等设计范式,解析算法优化思路;穿插字符串匹配、优先级管理等实际场景案例,展现数据结构与算法在提升应用程序性能、处理大规模数据中的关键作用。此外,书中提供各章练习答案,并附赠树算法扩展内容(可通过链接下载),助力读者巩固知识、深化实践。
无论是零基础入门数据结构,还是进阶优化算法设计,本书均以简明的步骤说明与丰富的代码示例,帮助读者掌握高效存储数据、设计可扩展程序的核心能力,适用于软件开发、算法课程学习及技术提升等场景。
|
關於作者: |
Dr. Basant Agarwal拥有计算机科学与工程专业博士和硕士学位,拥有超过 9 年的科研与教学经验。2016 年,他凭借欧洲信息与数学研究联盟(ERCIM)颁发的 prestigious 奖学金,在挪威科技大学(NTNU)担任博士后研究员,还曾在新加坡国立大学(NUS)淡马锡实验室担任研究科学家。其研究领域涵盖人工智能、信息物理系统、文本挖掘、自然语言处理、机器学习、深度学习、智能系统、专家系统及相关方向。
|
目錄:
|
第1章Python数据类型与结构1
1.1Python 3.10简介2
1.2Python安装2
1.2.1Windows操作系统2
1.2.2Linux操作系统2
1.2.3Mac操作系统3
1.3设置Python开发环境3
1.3.1通过命令行设置3
1.3.2通过Jupyter Notebook进行设置3
1.4数据类型和对象5
1.5基本数据类型6
1.5.1数值类型6
1.5.2布尔类型7
1.5.3序列类型7
1.5.4成员运算符、身份运算符和逻辑运算符12
1.5.5元组16
1.6复杂数据类型17
1.6.1字典17
1.6.2集合20
1.7Python的集合模块23
1.7.1命名元组24
1.7.2双端队列24
1.7.3有序字典25
1.7.4默认字典25
1.7.5ChainMap26
1.7.6计数器对象27
1.7.7UserDict27
1.7.8UserList28
1.7.9UserString28
1.8总结29
第2章算法设计导论30
2.1算法简介30
2.2算法的性能分析31
2.2.1时间复杂度32
2.2.2空间复杂度33
2.3渐进符号34
2.3.1θ符号35
2.3.2O符号36
2.3.3Ω符号38
2.4平摊分析40
2.5组合复杂度类别40
2.6计算算法的运行时间复杂度42
2.7总结44
练习44
第3章算法设计技术和策略46
3.1算法设计技术46
3.2递归47
3.3分治法48
3.3.1二分查找48
3.3.2归并排序50
3.4动态规划54
3.5贪婪算法58
3.6总结71
练习71
第4章链表73
4.1数组73
4.2链表简介74
4.3单链表76
4.3.1创建和遍历77
4.3.2追加元素78
4.3.3查询列表84
4.3.4删除元素85
4.4双链表89
4.4.1创建和遍历90
4.4.2追加项91
4.4.3查询列表97
4.4.4删除元素98
4.5循环链表102
4.5.1创建和遍历103
4.5.2添加元素104
4.5.3查询列表106
4.5.4删除循环链表中的元素106
4.6链表的实际应用110
4.7总结110
练习110
第5章栈和队列112
5.1栈112
5.1.1通过数组实现栈114
5.1.2使用链表实现栈117
5.1.3推入操作118
5.1.4弹出操作120
5.1.5查看操作121
5.1.6栈的应用122
5.2队列124
5.2.1Python的基于列表的队列125
5.2.2基于链表的队列128
5.2.3基于栈的队列131
5.2.4队列的应用136
5.3总结139
练习139
第6章树140
6.1术语140
6.2二叉树142
6.2.1节点的实现143
6.2.2树的遍历144
6.2.3表达式树150
6.3二叉搜索树154
6.3.1二叉搜索树的操作155
6.3.2二叉搜索树的优点166
6.4总结168
练习168
第7章堆和优先队列169
7.1堆169
7.1.1插入操作171
7.1.2删除操作174
7.1.3删除堆中特定位置的元素178
7.1.4堆排序180
7.2优先队列181
7.3总结186
练习186
第8章哈希表188
8.1简介188
8.1.1哈希函数189
8.1.2完美哈希函数191
8.2解决冲突192
8.3实现哈希表195
8.3.1在哈希表中存储元素196
8.3.2扩展哈希表197
8.3.3从哈希表中检索元素199
8.3.4测试哈希表200
8.3.5将哈希表实现为字典200
8.3.6分离链接法207
8.4符号表212
8.5总结213
练习213
第9章图和算法214
9.1图214
9.1.1有向图和无向图215
9.1.2有向无环图216
9.1.3加权图216
9.1.4二分图217
9.2图的表示217
9.2.1邻接表218
9.2.2邻接矩阵219
9.3图遍历220
9.3.1广度优先搜索221
9.3.2深度优先搜索226
9.4其他有用的与图相关的方法231
9.4.1最小生成树231
9.4.2Kruskal的最小生成树算法232
9.4.3Prim的最小生成树算法234
9.5总结236
练习236
第10章搜索237
10.1简介237
10.2线性搜索238
10.2.1无序线性搜索238
10.2.2有序线性搜索240
10.3跳跃搜索242
10.4二分搜索246
10.5插值搜索251
10.6指数搜索255
10.7选择搜索算法259
10.8总结259
练习260
第11章排序261
11.1技术要求261
11.2排序算法261
11.3冒泡排序算法262
11.4插入排序算法266
11.5选择排序算法269
11.6快速排序算法272
11.7快速排序算法的实现275
11.8Timsort算法278
11.9总结282
练习282
第12章选择算法284
12.1技术要求284
12.2按排序选择284
12.3随机选择285
12.4确定性选择288
12.5总结296
练习297
第13章字符串匹配算法298
13.1技术要求298
13.2字符串符号和概念298
13.3模式匹配算法299
13.4暴力算法300
13.5RabinKarp算法302
13.6KnuthMorrisPratt算法307
13.6.1prefix函数308
13.6.2理解KnuthMorrisPratt算法310
13.6.3实现KnuthMorrisPratt算法313
13.7BoyerMoore算法314
13.8总结323
练习323
附录练习答案324
第2章算法设计导论324
第3章算法设计技术和策略325
第4章链表326
第5章栈和队列328
第6章树329
第7章堆和优先队列331
第8章哈希表334
第9章图和算法334
第10章搜索336
第11章排序337
第12章选择算法341
第13章字符串匹配算法342
|
內容試閱:
|
数据结构在应用程序存储和组织数据方面起着至关重要的作用。选择正确的数据结构对于显著提高应用程序的性能至关重要,因为随着数据量的增加,我们希望能够扩展应用程序。本书将向你介绍基本的Python数据结构以及用于构造简单、可维护的应用程序的最常见和最重要的算法。它还允许你通过工作示例和易于遵循的分步说明来实现这些算法。
在本书中,你将学习基本的Python数据结构和最常见的算法。通过这本书,你将学习如何创建复杂的数据结构,如链表、栈、堆、队列、树和图,以及排序算法,包括冒泡排序、插入排序、堆排序和快速排序。本书还描述了各种选择算法,如随机选择和确定性选择,并详细讨论了各种数据结构算法和设计范例,如贪婪算法、分治法和动态规划。此外,通过简单的图形示例解释了复杂的数据结构,例如树和图,以理解这些有用的数据结构的概念。通过本书还可以学习各种重要的字符串处理和模式匹配算法,如KMP算法和BoyerMoore算法,以及它们在Python中的简单实现。
读者对象
本书适用于初级或中级水平的Python开发人员,因为各章均提供了实际示例和简单方法来理解复杂算法。对于学习数据结构和算法课程的学生也可能有用,因为它几乎涵盖了所研究的所有算法、概念和设计。本书还适用于希望部署大规模应用程序的软件开发人员,因为本书提供了存储相关数据的有效方法。
涵盖的内容
第1章Python数据类型与结构,介绍了Python中基本的数据类型和结构。本章概述了Python中可用的几种内置数据结构,这对于理解数据结构的内部机制至关重要。
第2章算法设计导论,详细介绍了算法设计问题和技巧。本章将通过运行时间和计算复杂度比较不同的算法分析,告诉我们哪些算法在给定问题中表现更好。
第3章算法设计技术和策略,涵盖了分治法、动态规划、贪婪算法等各种重要的数据结构设计范式。我们将学习通过一些主要原则(例如健壮性、适应性和可重用性)创建数据结构,并学习将结构与功能分离。
第4章链表,链表是最常见的数据结构之一,通常用于实现其他结构,例如栈和队列。本章描述了链表及其操作和实现,并且比较了它们与数组的行为,讨论了每种结构的相对优势和劣势。
第5章栈和队列,详细介绍了栈和队列数据结构。本章还讨论了这些线性数据结构的行为,并演示了一些实现,给出了典型的现实生活应用示例。
第6章树,考虑了树如何构成许多重要的高级数据结构的基础。本章将介绍如何实现二叉树,并研究如何遍历树、检索和插入值。
第7章堆和优先队列,将优先队列作为重要的数据结构,并展示如何使用堆来实现它们。
第8章哈希表,介绍了符号表,并给出了一些典型的实现方法,讨论了各种应用程序。我们将了解哈希的过程,给出哈希表的实现,并讨论各种设计注意事项。
第9章图和算法,介绍了一些更专业的结构,包括图和空间结构。我们将学习如何通过节点和顶点来表示数据,并创建有向图和无向图等结构。我们还将学习最小生成树的不同算法,如Prim算法和Kruskal算法。
第10章搜索,讨论了最常见的搜索算法,包括二分搜索和插值搜索算法,还给出了它们在各种数据结构中的使用示例。搜索数据结构是一项基本任务,有许多方法可以实现。
第11章排序,介绍了最常见的排序方法,包括冒泡排序、插入排序、选择排序、快速排序和堆排序算法,并详细解释了它们的原理及其Python实现。
第12章选择算法,讨论了如何使用选择算法来查找列表中的第i个最大的元素。这是与排序算法相关的重要操作,并且与数据结构和算法广泛相关。
第13章字符串匹配算法,涵盖了与字符串相关的基本概念和定义。本章详细讨论了各种字符串和模式匹配算法,比如朴素方法,以及KnuthMorrisPratt(KMP)和BoyerMoore模式匹配算法。
附录练习答案,提供了第2~13章练习的答案。
此外,读者还可以在线获取与树算法相关的额外内容,网址为:https://static.packtcdn.com/downloads/9781801073448_Bonus_Content.pdf。
建议
为了充分利用本书,需要在Python 3.10或更高版本上运行本书中的代码。Python的交互环境也可以用于运行代码片段。建议通过执行书中提供的代码来学习算法和概念,以更好地理解算法。本书旨在为读者提供实践经验,因此建议对所有算法进行编程,以充分发挥本书的价值。
|
|