Python數(shù)據(jù)結(jié)構(gòu)與算法分析 第2版
定 價:79 元
叢書名:Python
- 作者:[美] 布拉德利·米勒(Bradley N. Miller) 戴維·拉努姆(David L. Ranum)
- 出版時間:2019/9/1
- ISBN:9787115517210
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁碼:296
- 紙張:
- 版次:01
- 開本:16開
了解數(shù)據(jù)結(jié)構(gòu)與算法是透徹理解計算機科學的前提。隨著Python日益廣泛的應(yīng)用,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)、遞歸、搜索、排序、樹與圖的應(yīng)用,等等。
若把編寫代碼比作行軍打仗,那么要想稱霸沙場,不能僅靠手中的利刃,還需深諳兵法。Python是一把利刃,數(shù)據(jù)結(jié)構(gòu)與算法則是兵法。只有熟讀兵法,才能使利刃所向披靡。《Python數(shù)據(jù)結(jié)構(gòu)與算法分析 第2版》是用Python描述數(shù)據(jù)結(jié)構(gòu)與算法的開山之作,匯聚了作者多年的實戰(zhàn)經(jīng)驗。通過學習本書,你將掌握數(shù)據(jù)結(jié)構(gòu)與算法的基本思想,從而有信心探索任何編程難題的解決方法。
- 使用Python實現(xiàn)棧、隊列、列表等抽象數(shù)據(jù)類型
- 掌握大O記法和時間復(fù)雜度等概念
- 利用遞歸解決漢諾塔問題
- 實現(xiàn)常用的搜索算法和排序算法,并分析性能
- 掌握樹與圖在Python中的應(yīng)用
書本每章內(nèi)容都有配套練習,幫助你更好地掌握所學內(nèi)容;
針對Python新版全新改版,所有的代碼都是使用Python3.x寫成;
將所有的數(shù)據(jù)結(jié)構(gòu)源代碼都放在一個Python包中,方便讀者在完成作業(yè)時使用;
相關(guān)配套資源請至圖靈社區(qū)下載。
【作者介紹】
布拉德利·米勒(Bradley N. Miller)
美國路德學院計算機科學名譽教授,曾獲美國計算機協(xié)會軟件系統(tǒng)獎,對Python課程開發(fā)有深入研究,由他創(chuàng)立的互動式教科書平臺Runestone Interactive與全球600多家教育機構(gòu)有合作。
戴維·拉努姆(David L. Ranum)
IBM Watson認知軟件工程師,醫(yī)學信息學博士,致力于利用自然語言處理等人工智能技術(shù)解決醫(yī)療問題,曾在美國路德學院講授計算機科學課程近三十載。
【譯者介紹】
呂能
Twitter軟件工程師,開源項目Apache Heron的核心貢獻者。先后在浙江大學和美國加州大學洛杉磯分校取得計算機科學學士學位和碩士學位,關(guān)注分布式實時數(shù)據(jù)引擎系統(tǒng)的研發(fā),熱衷于普及計算機技術(shù)知識。
刁壽鈞
騰訊優(yōu)圖實驗室后臺開發(fā)工程師,畢業(yè)于復(fù)旦大學。先后從事過廣告業(yè)務(wù)與智慧零售、智慧社區(qū)業(yè)務(wù)的開發(fā)工作。熱愛算法與數(shù)據(jù)庫技術(shù),曾協(xié)助組織IMG社區(qū)的技術(shù)沙龍活動。另譯有《數(shù)據(jù)分析實戰(zhàn)》。
第 1章 導(dǎo)論 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 為何學習算法 4
1.4 Python基礎(chǔ) 5
1.4.1 數(shù)據(jù) 5
1.4.2 輸入與輸出 16
1.4.3 控制結(jié)構(gòu) 18
1.4.4 異常處理 21
1.4.5 定義函數(shù) 23
1.4.6 Python面向?qū)ο缶幊蹋憾x類 24
1.5 小結(jié) 37
1.6 關(guān)鍵術(shù)語 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數(shù)據(jù)結(jié)構(gòu)的性能 49
2.3.1 列表 49
2.3.2 字典 53
2.4 小結(jié) 55
2.5 關(guān)鍵術(shù)語 55
2.6 討論題 56
2.7 編程練習 56
第3章 基本數(shù)據(jù)結(jié)構(gòu) 57
3.1 本章目標 57
3.2 何謂線性數(shù)據(jù)結(jié)構(gòu) 57
3.3 !58
3.3.1 何謂!58
3.3.2 棧抽象數(shù)據(jù)類型 59
3.3.3 用Python實現(xiàn)棧 60
3.3.4 匹配括號 62
3.3.5 普通情況:匹配符號 64
3.3.6 將十進制數(shù)轉(zhuǎn)換成二進制數(shù) 65
3.3.7 前序、中序和后序表達式 67
3.4 隊列 75
3.4.1 何謂隊列 75
3.4.2 隊列抽象數(shù)據(jù)類型 75
3.4.3 用Python實現(xiàn)隊列 76
3.4.4 模擬:傳土豆 77
3.4.5 模擬:打印任務(wù) 79
3.5 雙端隊列 84
3.5.1 何謂雙端隊列 84
3.5.2 雙端隊列抽象數(shù)據(jù)類型 84
3.5.3 用Python實現(xiàn)雙端隊列 85
3.5.4 回文檢測器 86
3.6 列表 88
3.6.1 無序列表抽象數(shù)據(jù)類型 88
3.6.2 實現(xiàn)無序列表:鏈表 89
3.6.3 有序列表抽象數(shù)據(jù)類型 97
3.6.4 實現(xiàn)有序列表 97
3.7 小結(jié) 100
3.8 關(guān)鍵術(shù)語 101
3.9 討論題 101
3.10 編程練習 102
第4章 遞歸 105
4.1 本章目標 105
4.2 何謂遞歸 105
4.2.1 計算一列數(shù)之和 105
4.2.2 遞歸三原則 107
4.2.3 將整數(shù)轉(zhuǎn)換成任意進制的字符串 108
4.3 棧幀:實現(xiàn)遞歸 110
4.4 遞歸可視化 111
4.5 復(fù)雜的遞歸問題 116
4.6 探索迷宮 118
4.7 動態(tài)規(guī)劃 123
4.8 小結(jié) 128
4.9 關(guān)鍵術(shù)語 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 小結(jié) 159
5.5 關(guān)鍵術(shù)語 160
5.6 討論題 160
5.7 編程練習 161
第6章 樹 163
6.1 本章目標 163
6.2 示例 163
6.3 術(shù)語及定義 166
6.4 實現(xiàn) 168
6.4.1 列表之列表 168
6.4.2 節(jié)點與引用 171
6.5 二叉樹的應(yīng)用 173
6.5.1 解析樹 173
6.5.2 樹的遍歷 179
6.6 利用二叉堆實現(xiàn)優(yōu)先級隊列 182
6.6.1 二叉堆的操作 182
6.6.2 二叉堆的實現(xiàn) 183
6.7 二叉搜索樹 189
6.7.1 搜索樹的操作 190
6.7.2 搜索樹的實現(xiàn) 190
6.7.3 搜索樹的分析 201
6.8 平衡二叉搜索樹 202
6.8.1 AVL樹的性能 203
6.8.2 AVL樹的實現(xiàn) 204
6.8.3 映射實現(xiàn)總結(jié) 210
6.9 小結(jié) 211
6.10 關(guān)鍵術(shù)語 211
6.11 討論題 211
6.12 編程練習 213
第7章 圖及其算法 214
7.1 本章目標 214
7.2 術(shù)語及定義 215
7.3 圖的抽象數(shù)據(jù)類型 216
7.3.1 鄰接矩陣 216
7.3.2 鄰接表 217
7.3.3 實現(xiàn) 218
7.4 寬度優(yōu)先搜索 220
7.4.1 詞梯問題 220
7.4.2 構(gòu)建詞梯圖 221
7.4.3 實現(xiàn)寬度優(yōu)先搜索 223
7.4.4 分析寬度優(yōu)先搜索 226
7.5 深度優(yōu)先搜索 226
7.5.1 騎士周游問題 226
7.5.2 構(gòu)建騎士周游圖 227
7.5.3 實現(xiàn)騎士周游 229
7.5.4 分析騎士周游 231
7.5.5 通用深度優(yōu)先搜索 233
7.5.6 分析深度優(yōu)先搜索 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 小結(jié) 248
7.10 關(guān)鍵術(shù)語 249
7.11 討論題 249
7.12 編程練習 250
第8章 附加內(nèi)容 251
8.1 本章目標 251
8.2 復(fù)習Python列表 251
8.3 復(fù)習遞歸 256
8.3.1 同余定理 257
8.3.2 冪剩余 257
8.3.3 最大公因數(shù)與逆元 258
8.3.4 RSA算法 261
8.4 復(fù)習字典:跳表 264
8.4.1 映射抽象數(shù)據(jù)類型 265
8.4.2 用Python實現(xiàn)字典 265
8.5 復(fù)習樹:量化圖片 274
8.5.1 數(shù)字圖像概述 274
8.5.2 量化圖片 275
8.5.3 使用八叉樹改進量化算法 277
8.6 復(fù)習圖:模式匹配 284
8.6.1 生物學字符串 285
8.6.2 簡單比較 285
8.6.3 使用圖:DFA 287
8.6.4 使用圖:KMP 288
8.7 小結(jié) 291
8.8 關(guān)鍵術(shù)語 291
8.9 討論題 291
8.10 編程練習 292
附錄A Python圖形包 293
附錄B Python資源 294
參考資料295