PYTHON數據結構與算法(第3版) Hands-On Data Structures and Algorithms with Python - Third Edition

相關主題

商品描述

《Python 數據結構與算法(第 3 版)》是一本面向初級及中級 Python 開發者與學生的專業技術書籍,聚焦數據結構與算法在 Python 中的實戰應用。書中系統介紹了 Python 基礎數據類型(如數值、布爾、序列、字典、集合)及集合模塊(命名元組、雙端隊列等),深入解析鏈表、棧、隊列、樹、堆、哈希表、圖等核心數據結構的原理與實現,並涵蓋冒泡排序、快速排序、二分搜索、KMP 算法等經典算法的原理、Python 代碼實現及性能分析。

全書以 “理論 案例 實操” 為框架:通過對比數組與鏈表的特性、演示樹的遍歷邏輯、圖解圖的最小生成樹算法等,幫助讀者理解覆雜概念;結合動態規劃、分治法、貪婪算法等設計範式,解析算法優化思路;穿插字符串匹配、優先級管理等實際場景案例,展現數據結構與算法在提升應用程序性能、處理大規模數據中的關鍵作用。此外,書中提供各章練習答案,並附贈樹算法擴展內容(可通過鏈接下載),助力讀者鞏固知識、深化實踐。

無論是零基礎入門數據結構,還是進階優化算法設計,本書均以簡明的步驟說明與豐富的代碼示例,幫助讀者掌握高效存儲數據、設計可擴展程序的核心能力,適用於軟件開發、算法課程學習及技術提升等場景。

作者簡介

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