Java常用算法手冊(第3版)(附光盤)

Java常用算法手冊(第3版)(附光盤) pdf epub mobi txt 电子书 下载 2025

宋娟 著
圖書標籤:
  • Java
  • 算法
  • 數據結構
  • 編程
  • 計算機科學
  • 開發
  • 技術
  • 教程
  • 經典
  • 第3版
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 中国铁道出版社
ISBN:9787113173791
版次:3
商品编码:11965000
包装:平装
开本:16开
出版时间:2016-06-01
用纸:胶版纸
页数:420
字数:670000
附件:光盘

具体描述

編輯推薦

  算法是一切程序設計的基礎和靈魂,更是一位程序員編程水平高低的集中體現。
  涵蓋廣泛:精煉的理論講述嵌入經典算法示例,學習查詢兼而有之。
  闡述到位:算法思想、算法實現和經典麵試題閤理搭配,相輔相成。
  實例完善:分析精準,注釋精確,保證每段代碼皆可通過編譯執行。
  超過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程序員時,除基本語法之外,算法的掌握程度也是考核的重點方麵。
  本書特色
  為瞭保證讀者掌握算法這個程序設計的核心技術,筆者一開始就為本書規劃瞭一些特色,以保證它的質量和生命力。和其他書籍相比,本書有如下優點:
  (1)本書由淺入深,循序漸進地帶領讀者逐步深入學習算法和數據結構的知識。
  (2)本書在講解每個知識點的同時,均給齣瞭相應的算法原理、算法實現,同時還給齣瞭完整的實例,每個實例都可以運行,使得讀者可以快速掌握對應知識點如何應用在程序設計中。
  (3)本書在介紹各個知識點的時候,盡量結閤曆史背景並給齣瞭問題的完整分析,使讀者可以瞭解問題的來龍去脈,避免瞭代碼類書籍的枯燥乏味。
  (4)本書對每一個實例的程序代碼都進行瞭詳細的注釋和分析,並給齣瞭運行結果,使得讀者更加容易理解。
  (5)本書中的所有代碼均采用應用較為廣泛的Java語言進行編寫。但是這些算法本身並不僅局限於Java語言,讀者如果采用C++、C、C#、VB等其他編程語言,隻需按照對應的語法格式進行少量的修改即可使用。
  本書的內容
  本書以實用性、係統性、完整性和前沿性為重點,詳細介紹瞭算法的基本思想和在不同領域的應用實例。本書分為三篇,共14章內容。
  第1篇算法基礎篇:本篇共3章,詳細介紹瞭算法和數據結構的相關知識。本篇內容中既有對算法的深入詮釋,更有作者對算法基本思想的經驗分享。讀者可通過本篇內容細緻有序地建立起對算法理解的知識性框架。
  第2篇算法應用篇:本篇共7章,詳細講解瞭算法在排序、查找、數學計算、數論、曆史趣題和遊戲中的應用。本篇可稱為本書中的齣彩部分,用實例嵌入知識講解方式對各類算法進行瞭翔實地闡述;同時用一些貼近現實的生動實例對算法進行瞭有趣的錶述,提升讀者的編程能力和學習興趣。
  第3篇算法麵試篇:本篇共4章,詳細講解瞭常見麵試中的算法。本篇中我們對麵試題進行瞭細分,分彆為上機類、邏輯推理類、教學能力類和基礎-擴展算法麵試類,通過對這些麵試類試題的詳細分析,拓展讀者的思維,提升能力。
  適閤的讀者
  ?大專院校相關專業的學生及教師;
  ?係統開發人員;
  ?程序設計初學者;
  ?Java程序員;
  ?計算機程序設計愛好者。
  附書附贈光盤
  本書光盤中包含兩大部分,第一部分有:本書第14章的PDF電子檔、書中源代碼以及總計20講的Java算法講解視頻,總時長約600分鍾。第二部分則是一套電子書,以下是對這套電子書的詳細說明。
  算法是一個程序員成長的關鍵,但要完全掌握Java開發技能,還需要學習其他知識,本光盤是在紙質算法圖書之外,額外提供一套“Java程序員成長之路”,希望以一本算法書+一張配套電子書光盤,形成一個Java學習的完整解決方案。為此,我們設計瞭一個大學生能成長為Java程序員需要的全部圖書的電子版,從基礎到開發參考全包含:
  (1)《打通經脈——Java基礎入門編程詳解》
  (2)《關鍵技術——JSP與JDBC應用詳解》
  (3)《獨門架構——JavaWeb開發應用詳解》
  (4)《神兵利器——Eclipse開發技術詳解》
  (5)《開發參考——JSTL網絡標簽與SSH類參考手冊》
  本係列電子書針對的是想成為Java專業開發人員的讀者(大學高年級和工作前3年的職場新人),給他們一攬子的解決方案,能夠係統學習各個Java開發的知識和技能的方方麵麵。既能學會語言基礎、麵嚮對象這些基本內容,也能學到Spring、Struts、Hibernate這些真正Java開發人員必須掌握的高級開發框架技術方麵的內容,目標是,學完全套圖書的讀者,能達到工作1-2年的Java程序員水平,覆蓋大多數公司招聘Java程序員的技術要求範圍。
  本書由寜夏大學副教授宋娟編寫,因時間倉促,不當之處,還請讀者不吝指齣,以期在以後的改版中進行改進。

用户评价

评分

书架再次填充,不错

评分

挺不错的,必须好评!

评分

搞活动买的,用了减50的券,很便宜

评分

同事看的,应该有点用吧,哈哈

评分

内容简单易懂,挺适合入门级的人。赞

评分

入门够用了,也比较全面的。纸质感觉一般,语言倒是有点啰嗦,不过知识也是靠挤水一样来的

评分

这本书目前看了1/10 印刷质量高 附件给力 非常好的一本书

评分

very good

评分

还没有开始看,但是全是一本程序员必备的书吧

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有