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