《圖解算法:C++語言實現+視頻教學版》是2023年清華大學出版社出版的圖書,作者是吳燦銘、胡昭民。
基本介紹
- 中文名:圖解算法:C++語言實現+視頻教學版
- 作者:吳燦銘、胡昭民
- 出版時間:2024年1月1日
- 出版社:清華大學出版社
- ISBN:9787302649021
- 定價:89 元
內容簡介,圖書目錄,
內容簡介
《圖解算法:使用C++(視頻教學版)》是一本綜合講述數據結構及其算法的入門書,力求簡潔、清晰、嚴謹、且易於學習和掌握。
《圖解算法:使用C++(視頻教學版)》從介紹計算思維與程式設計兩者之間的關係展開,首先講述如何培養計算思維的4個部分:分解、模式識別、模式概括與抽象、算法。接著介紹經典算法的分類:分治法、遞歸法、貪心法、動態規劃法、疊代法、枚舉法及回溯法。還介紹常用數據結構:樹結構、圖論及哈希表。介紹了這些基礎知識之後,在接下來的各章中分別介紹排序算法、查找算法、數組與鍊表相關算法、信息安全基礎算法、堆疊與佇列相關算法、樹結構相關算法、圖結構相關算法及人工智慧基礎算法,並搭配了C++語言實現的完整範例程式。
《圖解算法:使用C++(視頻教學版)》每章還配有課後習題及參考答案,讀者可邊學邊練,非常適合想學習數據結構和算法的初學者使用,也適合作為高等院校計算機及相關專業的教材。
圖書目錄
目 錄
第1章 進入算法的世界 1
1.1 計算思維 2
1.1.1 分解 3
1.1.2 模式識別 4
1.1.3 模式概括與抽象 4
1.1.4 算法 5
1.2 計算思維的腦力大賽 6
1.2.1 三分球比賽燈記錄器 6
1.2.2 圖像字元串編碼 7
1.2.3 計算機繪圖指令實踐 7
1.2.4 炸彈超人遊戲 8
1.3 生活中處處都存在算法 8
1.3.1 算法的條件 9
1.3.2 時間複雜度O(f(n)) 11
1.4 課後習題 13
第2章 經典算法介紹 14
2.1 分治法 14
2.2 遞歸法 15
2.3 貪心法 18
2.4 動態規劃法 19
2.5 疊代法 21
2.6 枚舉法 23
2.7 回溯法 29
2.8 課後習題 35
第3章 常用數據結構 36
3.1 認識數據結構 37
3.2 常見的數據結構 39
3.2.1 數組 39
3.2.2 鍊表 42
3.2.3 堆疊 43
3.2.4 佇列 44
3.3 樹結構簡介 44
3.3.1 樹的基本概念 45
3.3.2 二叉樹 46
3.4 圖論簡介 47
3.5 哈希表 49
3.6 課後習題 50
第4章 排序算法 52
4.1 認識排序 52
4.1.1 排序的分類 53
4.1.2 排序算法分析 53
4.2 冒泡排序法 54
4.3 選擇排序法 58
4.4 插入排序法 61
4.5 希爾排序法 63
4.6 快速排序法 66
4.7 合併排序法 70
4.8 基數排序法 74
4.9 堆積樹排序法 77
4.10 課後習題 84
第5章 查找算法 85
5.1 常見查找算法的介紹 85
5.2 順序查找法 86
5.3 二分查找法 88
5.4 插值查找法 91
5.5 斐波那契查找法 93
5.6 課後習題 97
第6章 數組與鍊表相關算法 98
6.1 矩陣算法與深度學習 98
6.1.1 矩陣相加 100
6.1.2 矩陣相乘 102
6.1.3 轉置矩陣 104
6.1.4 稀疏矩陣 106
6.2 數組與多項式 109
6.3 建立單向鍊表 110
6.3.1 單向鍊表中新節點的插入 114
6.3.2 單向鍊表中節點的刪除 118
6.3.3 單向鍊表的反轉 122
6.3.4 單向鍊表的串接 126
6.4 鍊表與多項式 129
6.5 課後習題 133
第7章 信息安全基礎算法 134
7.1 數據加密 135
7.1.1 對稱密鑰加密系統 135
7.1.2 非對稱密鑰加密系統與RSA算法 136
7.1.3 認證 137
7.1.4 數字簽名 137
7.2 哈希算法 138
7.2.1 除留餘數法 138
7.2.2 平方取中法 139
7.2.3 摺疊法 140
7.2.4 數字分析法 141
7.3 碰撞與溢出處理 141
7.3.1 線性探測法 142
7.3.2 平方探測法 144
7.3.3 再哈希法 144
7.3.4 鍊表法 145
7.4 課後習題 150
第8章 堆疊與佇列相關算法 151
8.1 以數組來實現堆疊 151
8.2 以鍊表來實現堆疊 156
8.3 漢諾塔問題的求解算法 158
8.4 八皇后問題的求解算法 163
8.5 以數組來實現佇列 166
8.6 以鍊表來實現佇列 169
8.7 雙向佇列 171
8.8 優先佇列 175
8.9 課後習題 176
第9章 樹結構相關算法 178
9.1 以數組來實現二叉樹 179
9.2 以鍊表來實現二叉樹 182
9.3 二叉樹的遍歷 185
9.4 二叉樹節點的查找 190
9.5 二叉樹節點的插入 193
9.6 二叉樹節點的刪除 195
9.7 二叉運算樹 197
9.8 二叉排序樹 202
9.9 線索二叉樹 205
9.10 最佳化二叉查找樹 210
9.10.1 擴充二叉樹 210
9.10.2 哈夫曼樹 212
9.11 平衡樹 213
9.12 高級樹結構的套用 214
9.12.1 博弈樹 214
9.12.2 B樹 216
9.12.3 二叉空間分割樹 218
9.12.4 四叉樹和八叉樹 219
9.13 課後習題 221
第10章 圖結構相關算法 222
10.1 圖的定義 222
10.1.1 無向圖 223
10.1.2 有向圖 224
10.2 圖的數據表示法 225
10.2.1 鄰接矩陣法 225
10.2.2 鄰接鍊表法 227
10.2.3 鄰接複合鍊表法 229
10.2.4 索引表格法 230
10.3 圖的遍歷 231
10.3.1 深度優先遍歷 231
10.3.2 廣度優先遍歷 234
10.4 生成樹 239
10.4.1 深度優先生成樹和廣度優先生成樹 239
10.4.2 最小生成樹 240
10.4.3 Prim算法 240
10.4.4 Kruskal算法 245
10.5 圖的最短路徑 248
10.5.1 單點對全部頂點——Dijkstra算法與A*算法 248
10.5.2 兩兩頂點間的最短路徑——Floyd算法 255
10.6 課後習題 260
第11章 人工智慧基礎算法 262
11.1 機器學習簡介 263
11.1.1 監督式學習 264
11.1.2 半監督式學習 265
11.1.3 無監督式學習與K均值聚類 265
11.1.4 強化學習 267
11.2 認識深度學習 269
11.2.1 人工神經網路 270
11.2.2 卷積神經網路 272
11.2.3 循環神經網路 277
11.3 課後習題 280
附錄A 課後習題與解答 281