圖解算法:使用 Java

吳燦銘、胡昭民

  • 圖解算法:使用 Java-preview-1
  • 圖解算法:使用 Java-preview-2
  • 圖解算法:使用 Java-preview-3
圖解算法:使用 Java-preview-1

買這商品的人也買了...

商品描述

本書是一本綜合講述數據結構及其算法的入門書,內容淺顯易懂、邏輯嚴謹,範例豐富、可操作性強,力求適用性兼顧教師教學和學生自學。 全書從基本的數據結構概念開始講解,包括數組結構、隊列、堆棧、樹結構、排序、查找等;接著介紹常用的算法,包括分治法、遞歸法、貪心法、動態規劃法、迭代法、枚舉法、回溯法等,每個經典的算法都提供了Java程序設計語言編寫的完整範例代碼,並輔以豐富的圖示解析。最後在每章末尾都安排了大量的習題,這些習題包含各類考試的例題,並在附錄中提供瞭解答,可供讀者自測學習效果。 本書針對具有一定編程能力又想提高編程“深度”的非信息專業類人員,是一本數據結構和算法普及型的教科書或自學參考書。

作者簡介

吳燦銘,現任榮欽科技股份有限公司執行長,美國Rochester Institute of Technology計算機科學研究所畢業,長期從事信息教育及計算機圖書寫作的工作,計算機圖書著作包括計算器概論、數據結構、辦公室電子數據處理、互聯網等相關題材,並監製過多套遊戲以及教學軟件的研發。

目錄大綱

目 錄

第1章 計算思維與程序設計 1

1.1 程序設計的速成攻略 2

1.1.1 計算思維簡介 3

1.1.2 分解 4

1.1.3 模式識別 4

1.1.4 模式概括與抽象 5

1.1.5 算法 6

1.2 生活中到處都是算法 6

1.2.1 算法的條件 7

1.2.2 時間複雜度O(f(n)) 9

1.3 程序設計邏輯簡介 11

1.3.1 結構化程序設計 11

1.3.2 面向對象程序設計 12

1.3.3 面向對象程序設計的其他概念 15

課後習題 15

 

第2章 經典算法介紹 17

2.1 分治法 17

2.2 遞歸法 18

2.3 動態規劃法 21

2.4 迭代法 22

2.5 枚舉法 25

2.6 回溯法 29

2.7 貪心法 35

課後習題 37

 

第3章 走入數據結構的奇妙世界 38

3.1 認識數據結構 39

3.2 常見的數據結構 41

3.2.1 數組 41

3.2.2 鍊錶 45

3.2.3 堆棧 46

3.2.4 隊列 47

3.3 樹結構簡介 49

3.3.1 樹的基本概念 49

3.3.2 二叉樹 51

3.4 圖論簡介 52

3.5 哈希表 54

課後習題 56

 

第4章 排序算法 57

4.1 認識排序 58

4.2 冒泡排序法 60

4.3 選擇排序法 64

4.4 插入排序法 67

4.5 希爾排序法 69

4.6 快速排序法 73

4.7 合併排序法 76

4.8 基數排序法 77

4.9 堆積樹排序法 80

課後習題 87

 

第5章 查找算法 88

5.1 常見的查找算法 88

5.2 順序查找法 89

5.3 二分查找法 91

5.4 插值查找法 94

5.5 斐波那契查找法 96

課後習題 99

 

第6章 數組與鍊錶算法 100

6.1 矩陣算法與深度學習 100

6.1.1 矩陣相加 103

6.1.2 矩陣相乘 105

6.1.3 轉置矩陣 107

6.1.4 稀疏矩陣 109

6.2 數組與多項式 112

6.3 單向鍊錶算法 113

6.3.1 單向鍊錶插入節點的算法 119

6.3.2 單向鍊錶刪除節點的算法 123

6.3.3 對單向鍊錶進行反轉的算法 127

6.3.4 單向鍊錶串接的算法 130

6.4 鍊錶與多項式 131

課後習題 136

 

第7章 安全性算法 137

7.1 數據加密 138

7.1.1 對稱密鑰加密系統 139

7.1.2 非對稱密鑰加密系統與RSA算法 139

7.1.3 認證 140

7.1.4 數字簽名 141

7.2 哈希算法 142

7.2.1 除留餘數法 142

7.2.2 平方取中法 143

7.2.3 折疊法 144

7.2.4 數字分析法 145

7.3 碰撞與溢出處理 145

7.3.1 線性探測法 145

7.3.2 平方探測法 148

7.3.3 再哈希法 148

7.3.4 鍊錶 150

課後習題 154

 

第8章 堆棧與隊列算法 156

8.1 以數組來實現堆棧 156

8.2 以鍊錶來實現堆棧 161

8.3 漢諾塔問題的求解算法 165

8.4 八皇后問題的求解算法 171

8.5 用數組來實現隊列 174

8.6 用鍊錶來實現隊列 177

8.7 雙向隊列 179

8.8 優先隊列 182

課後習題 183

 

第9章 樹結構及其算法 184

9.1 用數組來實現二叉樹 185

9.2 用鍊錶來實現二叉樹 188

9.3 二叉樹遍歷 190

9.4 二叉查找樹 196

9.5 二叉樹節點的插入與刪除 199

9.6 二叉運算樹 201

9.7 二叉排序樹 205

9.8 線索二叉樹 208

9.9 擴充二叉樹 213

9.10 哈夫曼樹 215

9.11 平衡樹 216

9.12 機器學習與博弈樹 218

9.12.1 機器學習 218

9.12.2 博弈樹算法 219

課後習題 220

 

第10章 圖結構及其算法 222

10.1 圖的數據表示法 222

10.1.1 鄰接矩陣法 223

10.1.2 鄰接鍊錶法 225

10.1.3 鄰接複合鍊錶法 228

10.1.4 索引表格法 230

10.2 圖的遍歷 230

10.2.1 深度優先遍曆法 230

10.2.2 廣度優先遍曆法 233

10.3 生成樹 236

10.3.1 DFS生成樹和BFS生成樹 237

10.3.2 最小成本生成樹 238

10.3.3 Prim算法 238

10.3.4 Kruskal算法 241

10.4 圖的最短路徑法 246

10.4.1 Dijkstra算法與A*算法 247

10.4.2 Floyd算法 252

課後習題 256