本書是一本綜合講述資料結構及其演算法的入門書,力求簡潔、清晰、嚴謹且易於學習和掌握,並沒有追求大而全的資料結構和所有相關的演算法,而是選擇經#的演算法來配合介紹常用的資料結構,包括陣列、鏈表、堆疊、佇列以及樹和圖等。
本書為每個演算法及其資料結構均提供了演算的詳細圖解,並為每個經#的演算法都提供了Python語言編寫的完整範例程式(包含完整的原始程式碼)。每個範例程式都經過了測試和調試,可以直接在標準的Python解譯器中運行,非常適合作為普及型的教科書或自學讀物。
作者介紹
吳燦銘,現任榮欽科技股份有限公司執行長,美國Rochester Institute of Technology電腦科學研究所畢業,長期從事資訊教育及電腦圖書寫作的工作,電腦圖書著作包括計算器概論、資料結構、辦公室電子資料處理、互聯網等相關題材,並監製過多套遊戲以及教學軟體的研發。
目錄
第1章 進入演算法的世界 1
1.1 生活中到處都是演算法 2
1.1.1 演算法的定義 3
1.1.2 演算法的條件 4
1.1.3 時間複雜度O(f(n)) 6
1.2 常見演算法簡介 7
1.2.1 分治法 8
1.2.2 遞迴法 9
1.2.3 貪心法 11
1.2.4 動態規劃法 12
1.2.5 反覆運算法 13
1.2.6 枚舉法 14
1.2.7 回溯法 15
【課後習題】 18
第2章 常用的資料結構 19
2.1 認識資料結構 19
2.2 資料結構的種類 22
2.2.1 陣列 23
2.2.2 鏈表 25
2.2.3 堆疊 26
2.2.4 佇列 27
2.3 樹形結構 28
2.3.1 樹的基本觀念 29
2.3.2 二叉樹 30
2.4 圖形結構簡介 32
2.5 雜湊表 34
【課後習題】 35
第3章 排序演算法 36
3.1 認識排序 37
3.2 冒泡排序法 38
3.3 選擇排序法 40
3.4 插入排序法 42
3.5 希爾排序法 44
3.6 合併排序法 46
3.7 快速排序法 49
3.8 基數排序法 51
【課後習題】 53
第4章 查找與雜湊演算法 54
4.1 常見查找演算法的介紹 55
4.1.1 順序查找法 55
4.1.2 二分查找法 56
4.1.3 插值查找法 58
4.2 常見的雜湊法簡介 60
4.2.1 除留餘數法 60
4.2.2 平方取中法 62
4.2.3 折疊法 62
4.2.4 數字分析法 63
4.3 碰撞與溢出問題的處理 64
4.3.1 線性探測法 64
4.3.2 平方探測法 65
4.3.3 再雜湊法 66
【課後習題】 67
第5章 陣列與鏈表演算法 68
5.1 矩陣 68
5.1.1 矩陣相加演算法 69
5.1.2 矩陣相乘 70
5.1.3 轉置矩陣 72
5.2 建立單向鏈表 73
5.2.1 單向鏈表的連接功能 74
5.2.2 單向鏈表的節點刪除 76
5.2.3 單向鏈表的反轉 79
【課後習題】 82
第6章 堆疊與佇列演算法 83
6.1 用陣列實現堆疊 83
6.2 用鏈表實現堆疊 85
6.3 漢諾塔問題的求解演算法 87
6.4 八皇后問題的求解演算法 93
6.5 用陣列實現佇列 95
6.6 用鏈表實現佇列 98
6.7 雙向佇列 100
6.8 優先佇列 103
【課後習題】 104
第7章 樹形結構及其演算法 105
7.1 用陣列實現二叉樹 107
7.2 用鏈表實現二叉樹 109
7.3 二叉樹遍歷 111
7.4 二叉樹節點的查找 115
7.5 二叉樹節點的插入 116
7.6 二叉樹節點的刪除 118
7.7 堆積樹排序法 121
【課後習題】 127
第8章 圖的資料結構及其演算法 129
8.1 圖的遍歷 129
8.1.1 深度優先遍歷法 130
8.1.2 廣度優先遍歷法 132
8.2 最小生成樹(MST) 136
8.2.1 Prim演算法 136
8.2.2 Kruskal演算法 138
8.3 圖的最短路徑法 142
8.3.1 Dijkstra演算法與 A* 演算法 143
8.3.2 Floyd演算法 148
【課後習題】 152
附錄 習題和解答 155
1.1 生活中到處都是演算法 2
1.1.1 演算法的定義 3
1.1.2 演算法的條件 4
1.1.3 時間複雜度O(f(n)) 6
1.2 常見演算法簡介 7
1.2.1 分治法 8
1.2.2 遞迴法 9
1.2.3 貪心法 11
1.2.4 動態規劃法 12
1.2.5 反覆運算法 13
1.2.6 枚舉法 14
1.2.7 回溯法 15
【課後習題】 18
第2章 常用的資料結構 19
2.1 認識資料結構 19
2.2 資料結構的種類 22
2.2.1 陣列 23
2.2.2 鏈表 25
2.2.3 堆疊 26
2.2.4 佇列 27
2.3 樹形結構 28
2.3.1 樹的基本觀念 29
2.3.2 二叉樹 30
2.4 圖形結構簡介 32
2.5 雜湊表 34
【課後習題】 35
第3章 排序演算法 36
3.1 認識排序 37
3.2 冒泡排序法 38
3.3 選擇排序法 40
3.4 插入排序法 42
3.5 希爾排序法 44
3.6 合併排序法 46
3.7 快速排序法 49
3.8 基數排序法 51
【課後習題】 53
第4章 查找與雜湊演算法 54
4.1 常見查找演算法的介紹 55
4.1.1 順序查找法 55
4.1.2 二分查找法 56
4.1.3 插值查找法 58
4.2 常見的雜湊法簡介 60
4.2.1 除留餘數法 60
4.2.2 平方取中法 62
4.2.3 折疊法 62
4.2.4 數字分析法 63
4.3 碰撞與溢出問題的處理 64
4.3.1 線性探測法 64
4.3.2 平方探測法 65
4.3.3 再雜湊法 66
【課後習題】 67
第5章 陣列與鏈表演算法 68
5.1 矩陣 68
5.1.1 矩陣相加演算法 69
5.1.2 矩陣相乘 70
5.1.3 轉置矩陣 72
5.2 建立單向鏈表 73
5.2.1 單向鏈表的連接功能 74
5.2.2 單向鏈表的節點刪除 76
5.2.3 單向鏈表的反轉 79
【課後習題】 82
第6章 堆疊與佇列演算法 83
6.1 用陣列實現堆疊 83
6.2 用鏈表實現堆疊 85
6.3 漢諾塔問題的求解演算法 87
6.4 八皇后問題的求解演算法 93
6.5 用陣列實現佇列 95
6.6 用鏈表實現佇列 98
6.7 雙向佇列 100
6.8 優先佇列 103
【課後習題】 104
第7章 樹形結構及其演算法 105
7.1 用陣列實現二叉樹 107
7.2 用鏈表實現二叉樹 109
7.3 二叉樹遍歷 111
7.4 二叉樹節點的查找 115
7.5 二叉樹節點的插入 116
7.6 二叉樹節點的刪除 118
7.7 堆積樹排序法 121
【課後習題】 127
第8章 圖的資料結構及其演算法 129
8.1 圖的遍歷 129
8.1.1 深度優先遍歷法 130
8.1.2 廣度優先遍歷法 132
8.2 最小生成樹(MST) 136
8.2.1 Prim演算法 136
8.2.2 Kruskal演算法 138
8.3 圖的最短路徑法 142
8.3.1 Dijkstra演算法與 A* 演算法 143
8.3.2 Floyd演算法 148
【課後習題】 152
附錄 習題和解答 155
網路書店
類別
折扣
價格
-
新書79折$232