Python數(shù)據(jù)結(jié)構(gòu)與算法分析(第3版)
定 價(jià):99.8 元
- 作者:[美] 布拉德利·N. 米勒(Bradley N. Miller)[美] 戴維·L. 拉努姆(David L. Ranum)[烏] 羅曼·亞西諾夫斯基(Roman Yasinovskyy)
- 出版時(shí)間:2023/8/1
- ISBN:9787115623348
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁碼:304
- 紙張:
- 版次:02
- 開本:16開
了解數(shù)據(jù)結(jié)構(gòu)與算法是透徹理解計(jì)算機(jī)科學(xué)的前提。隨著Python日益廣泛的應(yīng)用,Python程序員需要實(shí)現(xiàn)與傳統(tǒng)的面向?qū)ο缶幊陶Z言相似的數(shù)據(jù)結(jié)構(gòu)與算法。本書是用Python描述數(shù)據(jù)結(jié)構(gòu)與算法的開山之作,匯聚了作者多年的實(shí)戰(zhàn)經(jīng)驗(yàn),向讀者透徹講解在Python環(huán)境下,如何通過一系列存儲(chǔ)機(jī)制有效地實(shí)現(xiàn)各類算法。通過本書,讀者將深刻理解Python數(shù)據(jù)結(jié)構(gòu)、遞歸、搜索、排序、樹與圖的應(yīng)用,等等。這一版重寫了書中的示例代碼,并對諸多內(nèi)容做了修正。
1.若把編寫代碼比作行軍打仗,那么要想稱霸沙場,不能僅靠手中的利刃,還需深諳兵法。Python是一把利刃,數(shù)據(jù)結(jié)構(gòu)與算法則是兵法。只有熟讀兵法,才能使利刃所向披靡。
2.本書作者在計(jì)算機(jī)科學(xué)領(lǐng)域深耕數(shù)十載,積累了豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。通過學(xué)習(xí)本書,你將掌握數(shù)據(jù)結(jié)構(gòu)與算法的基本思想,從而有信心探索任何編程難題的解決方法。
3.內(nèi)容系統(tǒng)完善,邏輯清晰。不僅能讓你學(xué)會(huì)用Python實(shí)現(xiàn)棧、隊(duì)列、列表等數(shù)據(jù)結(jié)構(gòu),掌握大O記法和時(shí)間復(fù)雜度等概念,利用遞歸解決漢諾塔問題,還能實(shí)現(xiàn)常用的搜索算法和排序算法,并分析性能,掌握樹與圖在Python中的應(yīng)用。
4.與第2版相比,第3版不僅對過時(shí)的內(nèi)容進(jìn)行了更新,還采用了PEP 8 Python編程規(guī)范,并對代碼進(jìn)行了重寫,引入了pythonds3包等。
[美] 布拉德利·N. 米勒(Bradley N. Miller)美國路德學(xué)院計(jì)算機(jī)科學(xué)名譽(yù)教授,曾獲美國計(jì)算機(jī)協(xié)會(huì)軟件系統(tǒng)獎(jiǎng),對Python課程開發(fā)有深入研究,由他創(chuàng)立的互動(dòng)式教科書平臺Runestone Interactive與全球600多家教育機(jī)構(gòu)有合作。
[美] 戴維·L. 拉努姆(David L. Ranum)
Merative高級科學(xué)家,醫(yī)學(xué)信息學(xué)博士,致力于利用自然語言處理等人工智能技術(shù)解決醫(yī)療問題,曾在美國路德學(xué)院講授計(jì)算機(jī)科學(xué)課程近三十載。
[烏] 羅曼·亞西諾夫斯基(Roman Yasinovskyy)
美國路德學(xué)院計(jì)算機(jī)科學(xué)系主任、副教授,授課范圍涵蓋算法、Web開發(fā)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、計(jì)算機(jī)體系結(jié)構(gòu)以及信息安全等課程。博士畢業(yè)于陶森大學(xué)應(yīng)用信息技術(shù)專業(yè)。
前言 iii
第 1章 導(dǎo)論 1
1.1 本章目標(biāo) 1
1.2 入門 1
1.3 何謂計(jì)算機(jī)科學(xué) 1
1.3.1 何謂編程 3
1.3.2 為何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)及抽象數(shù)據(jù)類型 4
1.3.3 為何學(xué)習(xí)算法 5
1.4 Python基礎(chǔ) 5
1.4.1 數(shù)據(jù) 6
1.4.2 輸入與輸出 16
1.4.3 控制結(jié)構(gòu) 20
1.4.4 異常處理 23
1.4.5 定義函數(shù) 25
1.4.6 Python面向?qū)ο缶幊蹋憾x類 26
1.5 小結(jié) 39
1.6 關(guān)鍵術(shù)語 40
1.7 練習(xí) 40
第 2章 算法分析 42
2.1 本章目標(biāo) 42
2.2 何謂算法分析 42
2.2.1 大O記法 45
2.2.2 異序詞檢測示例 48
2.3 Python數(shù)據(jù)結(jié)構(gòu)的性能 51
2.3.1 列表 51
2.3.2 字典 56
2.4 小結(jié) 57
2.5 關(guān)鍵術(shù)語 57
2.6 練習(xí) 58
第3章 基本數(shù)據(jù)結(jié)構(gòu) 59
3.1 本章目標(biāo) 59
3.2 何謂線性數(shù)據(jù)結(jié)構(gòu) 59
3.3 棧 60
3.3.1 棧抽象數(shù)據(jù)類型 61
3.3.2 用Python實(shí)現(xiàn)棧 62
3.3.3 匹配括號 64
3.3.4 通用問題:符號匹配 66
3.3.5 將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 67
3.3.6 前序、中序和后序表達(dá)式 69
3.4 隊(duì)列 77
3.4.1 隊(duì)列抽象數(shù)據(jù)類型 78
3.4.2 用Python實(shí)現(xiàn)隊(duì)列 78
3.4.3 隊(duì)列模擬:傳土豆 80
3.4.4 隊(duì)列模擬:打印任務(wù) 81
3.4.5 雙端隊(duì)列 87
3.5 雙端隊(duì)列抽象數(shù)據(jù)類型 87
3.5.1 用Python實(shí)現(xiàn)雙端隊(duì)列 88
3.5.2 回文檢測器 89
3.6 列表 91
3.6.1 無序列表抽象數(shù)據(jù)類型 91
3.6.2 實(shí)現(xiàn)無序列表:鏈表 92
3.6.3 有序列表抽象數(shù)據(jù)類型 100
3.6.4 實(shí)現(xiàn)有序列表 101
3.7 小結(jié) 104
3.8 關(guān)鍵術(shù)語 104
3.9 練習(xí) 105
第4章 遞歸 108
4.1 本章目標(biāo) 108
4.2 何謂遞歸 108
4.2.1 計(jì)算一列數(shù)之和 108
4.2.2 遞歸三原則 111
4.2.3 將整數(shù)轉(zhuǎn)換成任意進(jìn)制的字符串 111
4.3 棧幀:實(shí)現(xiàn)遞歸 113
4.4 可視化遞歸 115
4.5 復(fù)雜的遞歸問題 120
4.6 探索迷宮 123
4.7 動(dòng)態(tài)規(guī)劃 128
4.8 小結(jié) 134
4.9 關(guān)鍵術(shù)語 134
4.10 練習(xí) 134
第5章 搜索和排序 137
5.1 本章目標(biāo) 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 小結(jié) 166
5.5 關(guān)鍵術(shù)語 167
5.6 練習(xí) 167
第6章 樹及其算法 170
6.1 本章目標(biāo) 170
6.2 示例 170
6.3 術(shù)語及定義 173
6.4 實(shí)現(xiàn) 175
6.4.1 列表之列表 175
6.4.2 節(jié)點(diǎn)與引用 178
6.5 二叉樹的應(yīng)用 180
6.5.1 解析樹 180
6.5.2 樹的遍歷 186
6.6 利用二叉堆實(shí)現(xiàn)優(yōu)先級隊(duì)列 190
6.6.1 二叉堆的操作 190
6.6.2 二叉堆的實(shí)現(xiàn) 191
6.7 二叉搜索樹 198
6.7.1 搜索樹的操作 198
6.7.2 搜索樹的實(shí)現(xiàn) 198
6.7.3 搜索樹的分析 209
6.8 平衡二叉搜索樹 210
6.8.1 AVL樹的性能 211
6.8.2 AVL樹的實(shí)現(xiàn) 212
6.8.3 映射實(shí)現(xiàn)總結(jié) 219
6.9 小結(jié) 219
6.10 關(guān)鍵術(shù)語 219
6.11 練習(xí) 220
第7章 圖及其算法 223
7.1 本章目標(biāo) 223
7.2 術(shù)語及定義 224
7.3 圖的抽象數(shù)據(jù)類型 225
7.3.1 鄰接矩陣 226
7.3.2 鄰接表 227
7.3.3 實(shí)現(xiàn) 227
7.4 廣度優(yōu)先搜索 230
7.4.1 詞梯問題 230
7.4.2 構(gòu)建詞梯圖 230
7.4.3 實(shí)現(xiàn)廣度優(yōu)先搜索 232
7.4.4 分析廣度優(yōu)先搜索 235
7.5 深度優(yōu)先搜索 236
7.5.1 騎士周游問題 236
7.5.2 構(gòu)建騎士周游圖 236
7.5.3 實(shí)現(xiàn)騎士周游 238
7.5.4 分析騎士周游 241
7.5.5 通用深度優(yōu)先搜索 242
7.5.6 分析深度優(yōu)先搜索 245
7.6 拓?fù)渑判? 246
7.7 強(qiáng)連通分量 247
7.8 最短路徑問題 250
7.8.1 Dijkstra算法 252
7.8.2 分析Dijkstra算法 254
7.8.3 Prim算法 254
7.9 小結(jié) 258
7.10 關(guān)鍵術(shù)語 259
7.11 練習(xí) 259
第8章 進(jìn)階算法 261
8.1 本章目標(biāo) 261
8.2 復(fù)習(xí)Python列表 261
8.3 復(fù)習(xí)遞歸 266
8.3.1 同余定理 267
8.3.2 冪剩余 267
8.3.3 最大公因數(shù)與逆元 268
8.3.4 RSA算法 271
8.4 復(fù)習(xí)字典:跳表 275
8.4.1 映射抽象數(shù)據(jù)類型 276
8.4.2 用Python實(shí)現(xiàn)字典 276
8.5 復(fù)習(xí)樹:量化圖片 285
8.5.1 數(shù)字圖像概述 285
8.5.2 量化圖片 286
8.5.3 使用八叉樹改進(jìn)量化算法 288
8.6 復(fù)習(xí)圖:模式匹配 296
8.6.1 生物學(xué)字符串 296
8.6.2 簡單比較 297
8.6.3 圖算法:DFA 298
8.6.4 圖算法:KMP 300
8.7 小結(jié) 302
8.8 關(guān)鍵術(shù)語 303
8.9 練習(xí) 303
參考資料 305
版權(quán)聲明 306