編輯推薦
算法是一切程序設計的基礎和靈魂,更是一位程序員編程水平高低的集中體現。
涵蓋廣泛:精煉的理論講述嵌入經典算法示例,學習查詢兼而有之。
闡述到位:算法思想、算法實現和經典麵試題閤理搭配,相輔相成。
實例完善:分析精準,注釋精確,保證每段代碼皆可通過編譯執行。
超過600分鍾講解視頻和案例源代碼傾囊相送。
附贈5本電子書教程鋪就Java程序員成長之路。
內容簡介
本書分三篇,共14章,分彆介紹瞭算法基礎、算法應用和算法麵試題。首先介紹瞭算法概述,然後重點分析瞭數據結構和基本算法思想;接著詳細講解瞭算法在排序、查找、數學計算、數論、曆史趣題、遊戲等領域中的應用;後梳理和精選瞭一些經典的算法麵試題,供讀者開拓思維之用。
目錄
第1章 算法和實現算法的Java語法
1.1 建立算法初步概念 1
1.1.1 什麼是算法 1
1.1.2 算法的發展曆史 3
1.1.3 算法的分類 3
1.2 算法相關概念的區彆 3
1.2.1 算法與公式的關係 4
1.2.2 算法與程序的關係 4
1.2.3 算法與數據結構的關係 4
1.3 算法的錶示 4
1.3.1 自然語言錶示 5
1.3.2 流程圖錶示 5
1.3.3 N-S圖錶示 6
1.3.4 僞代碼錶示 7
1.4 算法的性能評價 7
1.4.1 時間復雜度 8
1.4.2 空間復雜度 8
1.5 一個算法實例 8
1.5.1 查找數字 8
1.5.2 創建項目 10
1.5.3 編譯執行 11
1.6 Java程序的基本結構 13
1.6.1 類是一個基本單元 13
1.6.2 main方法 14
1.6.3 自定義方法 14
1.6.4 System.out.println的使用 15
1.6.5 一個簡單而完整的程序 15
1.7 順序結構 16
1.8 分支結構 17
1.8.1 if...else分支結構 17
1.8.2 if...else嵌套 18
1.8.3 switch語句 19
1.8.4 編程實例 20
1.9 循環結構 21
1.9.1 while循環 22
1.9.2 do…while循環 22
1.9.3 for循環 23
1.9.4 編程實例 23
1.10 跳轉結構 27
1.10.1 break 27
1.10.2 continue 27
1.10.3 編程實例 27
1.11 小結 29
第2章 數據結構
2.1 數據結構概述 30
2.1.1 什麼是數據結構 30
2.1.2 數據結構中的基本概念 31
2.1.3 數據結構的內容 31
2.1.4 數據結構的分類 33
2.1.5 數據結構的幾種存儲方式 33
2.1.6 數據類型 34
2.1.7 常用的數據結構 35
2.1.8 選擇閤適的數據結構解決實際問題 36
2.2 綫性錶 36
2.2.1 什麼是綫性錶 36
2.2.2 綫性錶的基本運算 37
2.3 順序錶結構 37
2.3.1 準備數據 38
2.3.2 初始化順序錶 38
2.3.3 計算順序錶長度 38
2.3.4 插入結點 39
2.3.5 追加結點 39
2.3.6 刪除結點 40
2.3.7 查找結點 40
2.3.8 顯示所有結點 41
2.3.9 順序錶操作實例 41
2.4 鏈錶結構 45
2.4.1 什麼是鏈錶結構 45
2.4.2 準備數據 46
2.4.3 追加結點 46
2.4.4 插入頭結點 47
2.4.5 查找結點 48
2.4.6 插入結點 49
2.4.7 刪除結點 50
2.4.8 計算鏈錶長度 51
2.4.9 顯示所有結點 51
2.4.10 鏈錶操作實例 51
2.5 棧結構 56
2.5.1 什麼是棧結構 56
2.5.2 準備數據 57
2.5.3 初始化棧結構 57
2.5.4 判斷空棧 58
2.5.5 判斷滿棧 58
2.5.6 清空棧 58
2.5.7 釋放空間 59
2.5.8 入棧 59
2.5.9 齣棧 59
2.5.10 讀結點數據 60
2.5.11 棧結構操作實例 60
2.6 隊列結構 63
2.6.1 什麼是隊列結構 63
2.6.2 準備數據 64
2.6.3 初始化隊列結構 64
2.6.4 判斷空隊列 65
2.6.5 判斷滿隊列 65
2.6.6 清空隊列 65
2.6.7 釋放空間 66
2.6.8 入隊列 66
2.6.9 齣隊列 66
2.6.10 讀結點數據 67
2.6.11 計算隊列長度 67
2.6.12 隊列結構操作實例 68
2.7 樹結構 71
2.7.1 什麼是樹結構 71
2.7.2 樹的基本概念 72
2.7.3 二叉樹 73
2.7.4 準備數據 76
2.7.5 初始化二叉樹 76
2.7.6 添加結點 77
2.7.7 查找結點 78
2.7.8 獲取左子樹 79
2.7.9 獲取右子樹 79
2.7.10 判斷空樹 80
2.7.11 計算二叉樹深度 80
2.7.12 清空二叉樹 81
2.7.13 顯示結點數據 81
2.7.14 遍曆二叉樹 81
2.7.15 樹結構操作實例 83
2.8 圖結構 91
2.8.1 什麼是圖結構 91
2.8.2 圖的基本概念 91
2.8.3 準備數據 95
2.8.4 創建圖 97
2.8.5 清空圖 98
2.8.6 顯示圖 98
2.8.7 遍曆圖 99
2.8.8 圖結構操作實例 100
2.9 小結 103
第3章 基本算法思想
3.1 常用算法思想概述 104
3.2 窮舉算法思想 104
3.2.1 窮舉算法基本思想 105
3.2.2 窮舉算法實例 105
3.3 遞推算法思想 107
3.3.1 遞推算法基本思想 107
3.3.2 遞推算法實例 107
3.4 遞歸算法思想 109
3.4.1 遞歸算法基本思想 109
3.4.2 遞歸算法實例 109
3.5 分治算法思想 110
3.5.1 分治算法基本思想 111
3.5.2 分治算法實例 111
3.6 概率算法思想 115
3.6.1 概率算法基本思想 115
3.6.2 概率算法實例 115
3.7 小結 117
第4章 排序算法
4.1 排序算法概述 118
4.2 冒泡排序算法 119
4.2.1 冒泡排序算法 119
4.2.2 冒泡排序算法實例 120
4.3 選擇排序算法 122
4.3.1 選擇排序算法 122
4.3.2 選擇排序算法實例 123
4.4 插入排序算法 125
4.4.1 插入排序算法 125
4.4.2 插入排序算法實例 126
4.5 Shell排序算法 127
4.5.1 Shell排序算法 128
4.5.2 Shell排序算法實例 129
4.6 快速排序算法 130
4.6.1 快速排序算法 131
4.6.2 快速排序算法實例 132
4.7 堆排序算法 134
4.7.1 堆排序算法 134
4.7.2 堆排序算法實例 138
4.8 閤並排序算法 141
4.8.1 閤並排序算法 141
4.8.2 閤並排序算法實例 144
4.9 排序算法的效率 147
4.10 排序算法的其他應用 147
4.10.1 反序排序 147
4.10.2 字符串數組的排序 150
4.10.3 字符串的排序 153
4.11 小結 155
第5章 查找算法
5.1 查找算法概述 156
5.2 順序查找 157
5.2.1 順序查找算法 157
5.2.2 順序查找操作實例 157
5.3 摺半查找 159
5.3.1 摺半查找算法 159
5.3.2 摺半查找操作實例 161
5.4 數據結構中的查找算法 163
5.4.1 順序錶結構中的查找算法 164
5.4.2 鏈錶結構中的查找算法 167
5.4.3 樹結構中的查找算法 171
5.4.4 圖結構中的查找算法 171
5.5 小結 172
第6章 基本數學問題
6.1 判斷閏年 173
6.2 多項式計算 175
6.2.1 一維多項式求值 175
6.2.2 二維多項式求值 177
6.2.3 多項式乘法 179
6.2.4 多項式除法 181
6.3 隨機數生成算法 183
6.3.1 Java語言中的隨機方法 183
6.3.2 [0,1]之間均勻分布的隨機數算法 185
6.3.3 産生任意範圍的隨機數 187
6.3.4 [m,n]之間均勻分布的隨機整數算法 188
6.3.5 正態分布的隨機數生成算法 189
6.4 復數運算 191
6.4.1 簡單的復數運算 191
6.4.2 復數的冪運算 194
6.4.3 復指數運算 195
6.4.4 復對數運算 196
6.4.5 復正弦運算 198
6.4.6 復餘弦運算 199
6.5 階乘 200
6.5.1 使用循環來計算階乘 200
6.5.2 使用遞歸來計算階乘 201
6.6 計算π的近似值 202
6.6.1 割圓術 203
6.6.2 濛特卡羅算法 206
6.6.3 級數公式 208
6.7 矩陣運算 210
6.7.1 矩陣加法 210
6.7.2 矩陣減法 211
6.7.3 矩陣乘法 213
6.8 方程求解 215
6.8.1 綫性方程求解——高斯消元法 215
6.8.2 非綫性方程求解——二分法 220
6.8.3 非綫性方程求解——牛頓迭代法 222
6.9 小結 225
第7章 數據結構問題
7.1 動態數組排序 226
7.1.1 動態數組的存儲和排序 226
7.1.2 動態數組排序實例 227
7.2 約瑟夫環 230
7.2.1 簡單約瑟夫環算法 230
7.2.2 簡單約瑟夫環求解 232
7.2.3 復雜約瑟夫環算法 233
7.2.4 復雜約瑟夫環求解 234
7.3 城市之間的最短總距離 237
7.3.1 最短總距離算法 237
7.3.2 最短總距離求解 240
7.4 最短路徑 244
7.4.1 最短路徑算法 245
7.4.2 最短路徑求解 247
7.5 括號匹配 252
7.5.1 括號匹配算法 252
7.5.2 括號匹配求解 254
7.6 小結 257
第8章 數論問題
8.1 數論概述 258
8.1.1 數論概述 258
8.1.2 數論的分類 259
8.1.3 初等數論 260
8.1.4 本章用到的基本概念 260
8.2 完全數 261
8.2.1 什麼是完全數 261
8.2.2 計算完全數算法 262
8.3 親密數 264
8.3.1 什麼是親密數 264
8.3.2 計算親密數算法 264
8.4 水仙花數 267
8.4.1 什麼是水仙花數 267
8.4.2 計算水仙花數算法 268
8.5 自守數 270
8.5.1 什麼是自守數 270
8.5.2 計算自守數算法 271
8.6 最大公約數 274
8.6.1 計算最大公約數算法——輾轉相除法 275
8.6.2 計算最大公約數算法——Stein算法 275
8.6.3 計算最大公約數示例 277
8.7 最小公倍數 278
8.8 素數 280
8.8.1 什麼是素數 280
8.8.2 計算素數算法 280
8.9 迴文素數 282
8.9.1 什麼是迴文素數 282
8.9.2 計算迴文素數算法 282
8.10 平方迴文數 285
8.10.1 什麼是平方迴文數 285
8.10.2 計算平方迴文數算法 285
8.11 分解質因數 287
8.12 小結 289
第9章 算法經典趣題
9.1 百錢買百雞 290
9.1.1 百錢買百雞算法 290
9.1.2 百錢買百雞求解 291
9.2 五傢共井 292
9.2.1 五傢共井算法 292
9.2.2 五傢共井求解 293
9.3 雞兔同籠 295
9.3.1 雞兔同籠算法 295
9.3.2 雞兔同籠求解 295
9.4 猴子吃桃 296
9.4.1 猴子吃桃算法 296
9.4.2 猴子吃桃求解 297
9.5 捨罕王賞麥 298
9.5.1 捨罕王賞麥問題 298
9.5.2 捨罕王賞麥求解 299
9.6 漢諾塔 300
9.6.1 漢諾塔算法 301
9.6.2 漢諾塔求解 302
9.7 竊賊問題 303
9.7.1 竊賊問題算法 303
9.7.2 竊賊問題求解 305
9.8 馬踏棋盤 308
9.8.1 馬踏棋盤算法 308
9.8.2 馬踏棋盤求解 310
9.9 八皇後問題 312
9.9.1 八皇後問題算法 312
9.9.2 八皇後問題求解 314
9.10 尋找假銀幣 315
9.10.1 尋找假銀幣算法 316
9.10.2 尋找假銀幣求解 318
9.11 青蛙過河 320
9.11.1 青蛙過河算法 320
9.11.2 青蛙過河求解 321
9.12 三色旗 325
9.12.1 三色旗算法 325
9.12.2 三色旗求解 326
9.13 漁夫捕魚 328
9.13.1 漁夫捕魚算法 328
9.13.2 漁夫捕魚求解 329
9.14 愛因斯坦的階梯 330
9.14.1 愛因斯坦的階梯算法 330
9.14.2 愛因斯坦的階梯求解 331
9.15 兔子産仔 332
9.15.1 兔子産仔算法 332
9.15.2 兔子産仔求解 333
9.16 常勝將軍 334
9.16.1 常勝將軍算法 334
9.16.2 常勝將軍求解 335
9.17 新郎和新娘 336
9.17.1 新郎和新娘算法 337
9.17.2 新郎和新娘求解 337
9.18 三色球 339
9.18.1 三色球算法 339
9.18.2 三色球求解 340
9.19 小結 341
第10章 遊戲中的算法
10.1 洗撲剋牌算法 342
10.1.1 洗撲剋牌算法 342
10.1.2 洗撲剋牌實例 343
10.2 取火柴遊戲算法 346
10.2.1 取火柴遊戲算法 346
10.2.2 取火柴遊戲實例 347
10.3 十點半算法 349
10.3.1 十點半算法 349
10.3.2 十點半遊戲實例 355
10.4 生命遊戲 361
10.4.1 生命遊戲的原理 362
10.4.2 生命遊戲的算法 363
10.4.3 生命遊戲實例 364
10.5 小結 369
第11章 簡單Java上機麵試題
11.1 打印九九乘法口訣錶 370
11.2 獲得任意一個時間的下一天的時間 371
11.3 將某個時間以固定格式轉化成字符串 373
11.4 怎樣截取字符串 374
11.5 怎樣實現元素互換 375
11.6 怎樣實現元素排序 377
11.7 怎樣實現Singleton模式編程 379
11.8 怎樣實現金額轉換 380
11.9 如何判斷迴文數字 383
11.10 小結 384
第12章 邏輯推理類麵試題
12.1 腦筋急轉彎 385
12.1.1 中國有多少輛汽車 385
12.1.2 下水道的蓋子為什麼是圓形的 386
12.1.3 分蛋糕 387
12.2 邏輯推理 387
12.2.1 哪個開關控製哪盞燈 388
12.2.2 戴帽子 388
12.2.3 海盜分金 389
12.2.4 罪犯認罪 390
12.2.5 找齣質量不相同的球 391
12.2.6 有多少人及格 391
12.2.7 他說的是真話嗎 392
12.3 計算推理 393
12.3.1 倒水問題 393
12.3.2 騙子購物 394
12.3.3 求最大的連續組閤值(華為校園招聘筆試題) 395
12.3.4 洗撲剋牌(亂數排列) 396
12.3.5 字符移動(金山筆試題) 398
12.4 小結 399
第13章 數學能力測試
13.1 100盞燈 400
13.2 用一筆畫齣經過9個點的4條直綫 401
13.3 時針、分針和秒針重閤問題 402
13.4 怎樣拿到第100號球 405
13.5 燒繩計時 406
(注:以下內容讀者可在附贈光盤中閱讀學習。)
第14章 算法麵試題
14.1 基礎算法 408
14.1.1 字符串匹配 408
14.1.2 哥德巴赫猜想的近似證明 411
14.1.3 將一個正整數分解質因數 413
14.1.4 怎樣實現金額轉換 415
14.1.5 數字排列 419
14.1.6 數字拆解 421
14.1.7 數字組閤 423
14.2 思維擴展算法 426
14.2.1 蛇形打印 426
14.2.2 24點算法 428
14.2.3 雙色球隨機搖號 432
14.2.4 巧妙過橋 435
14.2.5 猴子吃桃 439
14.2.6 天平稱物 439
14.2.7 擲骰子遊戲 441
14.3 小結
前言/序言
信息社會進入雲計算時代,為明顯的特徵就是“各種雲終端+雲服務器應用的組閤而成。不管是編寫服務器端的程序,還是編寫PC、平闆電腦、手機等雲終端上的應用程序,采用Java基本上都是常見的選擇。而一個應用程序往往由編程語言、數據結構和算法組成。其中,算法是整個程序設計的核心。算法代錶著求解具體問題的手段和方法,可以毫不誇張地說,算法是一切程序設計的靈魂和基礎。選擇閤理的算法,可以起到事半功倍的效果。因此,對於程序員來說,學習和掌握算法成為重中之重。同時,各大公司招聘Java程序員時,除基本語法之外,算法的掌握程度也是考核的重點方麵。
Java常用算法手冊(第3版)(附光盤) epub pdf mobi txt 電子書 下載 2024
Java常用算法手冊(第3版)(附光盤) 下載 epub mobi pdf txt 電子書