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