《Java算法從菜鳥到達人》以 Java語言為實現平臺,全書分四個部分,用言簡意賅的語言介紹了算法的基本概念、五種經典的算法思想、重要的數據結構以及實踐中常用的幾種算法。除第1章和第2章外,書中每章內容都包括了基本概念、實現方式、具體應用以及達人修煉真題。每一種算法思想中的真題都提供了相應的源代碼,可供讀者運行,從而達到理論與實踐并重的目的。
《Java算法從菜鳥到達人》涉及算法基本分析、算法基本思想、具體應用及大量真題等實用知識,內容全面、條理清楚、語言通俗。本書對計算機及相關專業(yè)本科生及研究生的算法能力提升和就業(yè)將有所幫助;此外,計算機科學相關領域的工程師以及愛好者也可以將本書作為技術參考書籍,查找所需算法的相關內容并從中得到啟示;當然,對計算機科學感興趣的讀者以及IT領域項目經理也可以閱讀本書,從而開啟算法世界的大門。
前言
第一部分 算法基礎
第1章 算法綜述/2
1.1 算法在計算機系統(tǒng)中的作用/2
1.1.1 算法的定義/2
1.1.2 算法的地位/2
1.1.3 一個簡單的算法/3
1.2 偽代碼的約定/4
第2章 算法分析/6
2.1 精確效率分析/6
2.2 漸進效率分析/8
2.2.1 漸進記號/9
2.2.2 漸進記號的應用/10
2.3 遞歸式求解/15
第二部分 經典算法思想
第3章 遞歸與分治法/18
3.1 遞歸的概念/18
3.2 分治法/22
3.3 分治法的應用/24
3.4 達人修煉真題/26
第4章 動態(tài)規(guī)劃算法/52
4.1 動態(tài)規(guī)劃基礎/52
4.1.1 動態(tài)規(guī)劃基本思想/52
4.1.2 動態(tài)規(guī)劃算法舉例—最長公共子序列/52
4.2 動態(tài)規(guī)劃算法分析/56
4.2.1 最優(yōu)子結構/56
4.2.2 重疊子問題/57
4.3 動態(tài)規(guī)劃算法的應用/57
4.3.1 0-1背包問題/57
4.3.2 石子歸并/59
4.3.3 常用動態(tài)規(guī)劃類問題/61
4.4 達人修煉真題/63
第5章 貪心算法/83
5.1 貪心算法基礎/83
5.1.1 貪心算法基本思想/83
5.1.2 貪心算法舉例—裝載問題/83
5.2 貪心算法的分析/84
5.3 貪心算法的應用/85
5.3.1 普通背包問題/85
5.3.2 活動安排問題/87
5.3.3 紀念品分組/89
5.4 達人修煉真題/92
第6章 回溯法/96
6.1 回溯法基本概念與算法框架/96
6.1.1 基本思路/96
6.1.2 回溯法的實現/98
6.2 回溯法的應用/99
6.2.1 0-1背包問題/99
6.2.2 八皇后問題/101
6.2.3 一摞烙餅的排序/102
6.3 達人修煉真題/105
第7章 分支界限法/109
7.1 分支界限法概念與算法框架/109
7.1.1 分支界限法基本思想/109
7.1.2 算法框架與分析/110
7.1.3 一個簡單的例子(0-1背包問題)/112
7.2 分支界限法的應用/114
7.2.1 TSP問題/114
7.2.2 多段圖的最短路徑問題/117
7.2.3 任務分配問題/119
7.3 達人修煉真題/121
第三部分 重要數據結構
第8章 棧與隊列/131
8.1 棧/131
8.2 隊列/134
8.3 達人修煉真題/137
第9章 鏈表/153
9.1 鏈表概述/153
9.2 鏈表的操作/154
9.3 達人修煉真題/157
第10章 樹與二叉樹/165
10.1 樹的概念與定義/165
10.1.1 基本概念/165
10.1.2 樹的表示/166
10.2 二叉樹/167
10.2.1 基本概念/167
10.2.2 二叉樹的存儲結構/168
10.2.3 遍歷二叉樹和線索二叉樹/169
10.3 樹、二叉樹和森林之間的關系/173
10.4 達人修煉真題/178
第11章 哈希表/184
11.1 哈希表概述/184
11.2 哈希表的應用/187
11.3 達人修煉真題/189
第12章 并查集/202
12.1 并查集基本思想/202
12.1.1 并查集概念/203
12.1.2 并查集的實現/203
12.1.3 帶權并查集/206
12.2 并查集的應用/209
12.2.1 食物鏈/209
12.2.2 Kruskal最小生成樹算法/211
12.3 達人修煉真題/212
第13章 位圖/218
13.1 位圖基本概念/218
13.2 位圖法的應用/223
13.2.1 位運算常見應用/223
13.2.2 位圖法在大數據處理中的應用/228
13.3 達人修煉真題/229
第四部分 常用算法
第14章 排序算法/235
14.1 插入排序/235
14.2 選擇排序/240
14.3 交換排序/243
14.4 歸并排序/248
14.5 桶排序/基數排序/249
14.6 達人修煉真題/252
第15章 查找算法/257
15.1 基本概念/257
15.2 靜態(tài)查找/258
15.3 動態(tài)查找/261
15.4 哈希查找/266
15.5 達人修煉真題/267
第16章 字符串匹配算法/273
16.1 簡單字符串匹配/273
16.2 KMP算法/274
16.3 BM算法/277
16.4 SUNDAY算法/278
16.5 達人修煉真題/278
附 錄/287