明解 Python 算法與數據結構
[日]柴田望洋
買這商品的人也買了...
-
$352敏捷項目管理(從入門到精通實戰指南)
-
$528$502 -
$534$507 -
$500$395 -
$419$398 -
$534$507 -
$305機器學習入門與實戰 — 基於 scikit-learn 和 Keras
-
$1,200$1,020 -
$356集成學習入門與實戰:原理、算法與應用
-
$662明解 Python
-
$301敏控項目管理
-
$407小型項目管理(第3版)
-
$659$626 -
$654$621 -
$505產品經理技術手冊
-
$252自然語言處理技術與應用
-
$454SSM + Vue.js 3 全棧開發實戰
-
$490$387 -
$594$564 -
$600$420 -
$480$379 -
$499$394 -
$680$537 -
$980$774 -
$980$774
相關主題
商品描述
本書圖文並茂、示例豐富,結合136段代碼和213幅圖表,直觀易懂地介紹了算法與數據結構的基礎知識,包括數組、查找、棧和隊列、遞歸算法、排序、字符串查找、線性列表、樹結構和二分查找樹等。本書並非單純地對算法與數據結構進行介紹,而是致力於讓讀者掌握編寫實用程序的技術。為此,本書提供的示例代碼都是實際可運行的程序,理解這些示例程序之後,相信讀者的Python編程能力也會有很大的提升。本書各章節末設置有練習題,並在書末給出了答案,據此讀者可檢測自己對知識的掌握情況,加深理解。
作者簡介
柴田望洋(作者)
日本福冈工业大学信息工程学院副教授。在IT界家喻户晓,编写了一系列富有影响力的计算机教材和参考书,如《明解C语言》《明解C语言:中级篇》《明解C++》等。本书荣获日本工学教育协会作品奖。
目錄大綱
第 1章 基本算法 1
1-1 算法 2
求三個值中的最大值 2
條件判斷和分支 9
流程圖符號 11
1-2 循環 14
求1和n之間所有整數之和 14
二值排序和二值交換 16
循環過程中的條件判斷(其一) 18
循環過程中的條件判斷(其二) 20
循環過程中的條件判斷(其三) 21
讀取正數 23
邊長和麵積均為整數的矩形 25
跳過循環和遍歷多個範圍 27
結構化程序設計 29
多重循環 29
章末問題 35
第 2章 數據結構和數組 37
2-1 數據結構和數組 38
數組的必要性 38
列表和元組 39
通過索引表達式訪問 41
通過切片表達式訪問 42
數據結構 45
2-2 數組 48
求數組中元素的最大值 48
求數組中元素最大值的函數的實現 49
註釋和類型提示 50
構建可復用模塊 51
模塊測試 51
反轉數組中元素的順序 55
進制轉換 58
質數枚舉 64
章末問題 72
第3章 查找 75
3-1 查找算法 76
查找和關鍵字 76
數組查找 76
3-2 線性查找 78
線性查找 78
哨兵法 82
3-3 二分查找 84
二分查找 84
復雜度 88
3-4 散列法 92
對有序數組進行操作 92
散列法 92
散列沖突 93
拉鏈法 93
開放地址法 102
章末問題 109
第4章 棧和隊列 113
4-1 棧 114
棧 114
棧的實現 114
4-2 隊列 125
隊列 125
使用數組實現簡單隊列 125
使用環形緩沖區實現隊列 126
章末問題 138
第5章 遞歸算法 141
5-1 遞歸的基礎知識 142
遞歸 142
階乘值 142
輾轉相除法 145
5-2 遞歸算法的分析 147
遞歸算法的分析 147
遞歸算法的非遞歸寫法 149
5-3 漢諾塔問題 152
漢諾塔問題 152
5-4 八皇後問題 156
八皇後問題 156
擺放皇後 156
分支操作 162
定界操作和分支定界法 163
解決八皇後問題的程序 165
章末問題 167
第 6章 排序 169
6-1 排序 170
排序 170
6-2 直接交換排序 172
直接交換排序(冒泡排序) 172
雞尾酒排序(雙向冒泡排序) 179
6-3 直接選擇排序 182
直接選擇排序 182
6-4 直接插入排序 184
直接插入排序 184
6-5 希爾排序 188
直接插入排序的特點 188
希爾排序 188
6-6 快速排序 194
快速排序簡介 194
分組過程 195
快速排序 197
非遞歸快速排序 200
樞軸的選擇 205
時間復雜度 207
6-7 歸並排序 210
有序數組的歸並 210
歸並排序 212
6-8 堆排序 216
堆 216
堆排序 217
刪除根節點後重建堆 217
堆排序的擴展 219
數組堆化 221
堆排序的時間復雜度 224
6-9 計數排序 225
計數排序 225
章末問題 231
第 7章 字符串查找 235
7-1 暴力匹配算法 236
字符串查找 236
暴力匹配算法(直接匹配算法) 236
7-2 KMP算法 241
KMP 算法 241
7-3 Boyer-Moore算法 245
Boyer-Moore 算法 245
章末問題 249
第 8章 線性表 251
8-1 什麽是線性表 252
線性表 252
線性表的實現 252
8-2 單鏈表 254
通過指針實現單鏈表 254
在程序中使用單鏈表 266
8-3 通過游標實現單鏈表 269
通過游標實現單鏈表 269
數組中的空元素 273
自由列表 274
在程序中使用數組游標版的單鏈表 276
8-4 雙向循環鏈表 279
循環鏈表 279
雙鏈表 279
雙向循環鏈表 280
雙向循環鏈表的實現 280
在程序中使用雙向循環鏈表 291
章末問題 294
第 9章 樹結構和二叉查找樹 297
9-1 樹結構 298
樹 298
有序樹和無序樹 299
有序樹的查找 299
9-2 二叉樹和二叉查找樹 302
二叉樹 302
完全二叉樹 302
二叉查找樹 303
二叉查找樹的實現 304
在程序中使用二叉查找樹 314
章末問題 317
章末問題答案 322
參考文獻 324
致謝 325