Linux C_算法設計、分析與實現:C、C++和Java

Linux C_算法設計、分析與實現:C、C++和Java

Linux C_演算法設計、分析與實現:C、C++和Java


GITHUB: https://github.com/jash-git/Jash_LinuxC/tree/master/%E7%AE%97%E6%B3%95%E8%A8%AD%E8%A8%88%E3%80%81%E5%88%86%E6%9E%90%E8%88%87%E5%AF%A6%E7%8F%BE%EF%BC%9AC%E3%80%81C%2B%2B%E5%92%8CJava


作者序:

譯者序:
前言:
內容簡介:
《算法設計、分析與實現:C、C++和Java》第1章~第6章按算法設計技巧分成漸增型算法、分治算法、動態規劃算法、貪婪算法、回溯算法和圖的搜索算法。每章針對一些經典問題給出解決問題的算法,并分析算法的時間復雜度。這樣對于初學者來說,按照算法的設計方法劃分,算法思想的闡述比較集中,有利于快速入門理解算法的精髓所在。一旦具備了算法設計的基本方法,按應用領域劃分專題深入學習,讀者可以結合已學的方法綜合起來解決比較復雜的問題。本書第7章的線性規劃和第8章的計算幾何是綜合算法部分,通過學習這些內容,讀者將進一步地學習更前沿的隨機算法、近似算法和并行算法等現代算法設計方法和實戰技巧,第9章是算法的實踐部分,教給讀者如何進行調試。
《算法設計、分析與實現:C、C++和Java》特色是按照算法之間邏輯關系編排學習順序,并對每一個經典算法,都給出了完整的C/C++/Java三種主流編程語言的實現程序,是一本既能讓讀者清晰、輕松地理解算法思想,又能讓讀者編程實現算法的實用書籍。建議讀者對照本書在計算機上自己創建項目、文件,進行錄入、調試程序等操作,從中體會算法思想的精髓,體驗編程成功帶來的樂趣。
《算法設計、分析與實現:C、C++和Java》適合各種學習算法的人員使用,也適合作為大中專院校的學習用書,及培訓學校的教材。

目錄:
第1章 集腋成裘——漸增型算法 1
1.1 算法設計與分析 1
1.2 插入排序算法 4
1.2.1 算法描述與分析 4
1.2.2 程序實現 6
1.2.3 應用——贏得舞伴 32
1.3 兩個有序序列的合并算法 33
1.3.1 算法描述與分析 33
1.3.2 程序實現 36
1.4 序列的劃分 47
1.4.1 算法描述與分析 47
1.4.2 程序實現 49
1.5 小結 55

第2章 化整為零——分治算法 56
2.1 Hanoi塔問題與遞歸算法 56
2.1.1 算法的描述與分析 56
2.1.2 程序實現 59
2.1.3 應用——新Hanoi塔游戲 63
2.2 歸并排序算法 66
2.2.1 算法描述與分析 66
2.2.2 程序實現 67
2.2.3 應用——讓舞伴更開心 73
2.3 快速排序算法 74
2.3.1 算法描述與分析 74
2.3.2 程序實現 77
2.4 堆的實現 84
2.4.1 堆的概念及其創建 84
2.4.2 程序實現 89
2.5 堆排序 95
2.5.1 算法描述與分析 95
2.5.2 程序實現 96
2.6 基于二叉堆的優先隊列 101
2.6.1 算法描述與分析 101
2.6.2 程序實現 102
2.7 關于排序算法 114
2.7.1 比較型排序算法的時間復雜度 114
2.7.2 C/C++/Java提供的排序函數(方法) 116
2.7.3 應用——環法自行車賽 117
2.8 小結 118

第3章 記表備查——動態規劃算法 120
3.1 矩陣鏈乘法 121
3.1.1 算法描述與分析 121
3.1.2 程序實現 125
3.1.3 應用——牛牛玩牌 131
3.2 最長公共子序列 133
3.2.1 算法描述與分析 133
3.2.2 程序實現 136
3.2.3 算法的應用 143
3.3 0-1背包問題 147
3.3.1 算法描述與分析 147
3.3.2 程序實現 149
3.3.3 算法的應用 153
3.4 帶權有向圖中任意兩點間的最短路徑 156
3.4.1 算法描述與分析 156
3.4.2 程序實現 160
3.4.3 應用——牛牛聚會 166
3.5 小結 168

第4章 高效的選擇——貪婪算法 169
4.1 活動選擇問題 169
4.1.1 算法描述與分析 169
4.1.2 程序實現 172
4.1.3 貪婪算法與動態規劃 177
4.1.4 應用——海岸雷達 179
4.2 Huffman編碼 181
4.2.1 算法描述與分析 181
4.2.2 程序實現 185
4.2.3 應用——R-叉Huffman樹 195
4.3 最小生成樹 199
4.3.1 算法描述與分析 199
4.3.2 程序實現 202
4.3.3 應用——北方通信網 212
4.4 單源最短路徑問題 214
4.4.1 算法描述與分析 214
4.4.2 程序實現 217
4.4.3 應用——西氣東送 224
4.5 小結 227

第5章 艱苦卓絕——回溯算法 228
5.1 組合問題與回溯算法 228
5.1.1 3-著色問題 228
5.1.2 n-皇后問題 231
5.1.3 Hamilton回路問題 234
5.1.4 子集和問題 236
5.2 解決組合問題的回溯算法框架 237
5.2.1 算法框架 237
5.2.2 程序實現 241
5.3 排列樹和子集樹 253
5.3.1 子集樹問題 253
5.3.2 排列樹問題 258
5.4 用回溯算法解決組合優化問題 261
5.4.1 算法框架 261
5.4.2 旅行商問題 263
5.4.3 應用 268
5.5 P、NP和NP-完全問題 276
5.6 小結 278

第6章 圖的搜索算法 280
6.1 廣度優先搜索 282
6.1.1 算法描述與分析 282
6.1.2 程序實現 285
6.1.3 應用——攻城掠地 293
6.2 深度優先搜索 296
6.2.1 算法描述與分析 296
6.2.2 程序實現 298
6.2.3 有向無圈圖的拓撲排序 301
6.2.4 應用——全排序 309
6.3 有向圖的強連通分支 311
6.3.1 算法描述與分析 311
6.3.2 程序實現 315
6.3.3 應用——親情號 320
6.4 無向圖的雙連通分支 323
6.4.1 算法描述與分析 323
6.4.2 程序實現 326
6.4.3 應用——雌雄大盜 329
6.5 流網絡與最大流問題 331
6.5.1 算法描述與分析 331
6.5.2 程序實現 342
6.5.3 應用 344
6.6 小結 347

第7章 集組合優化問題之大成——線性規劃 348
7.1 標準形式與松弛形式 351
7.1.1 線性規劃的標準形式 351
7.1.2 線性規劃的松弛形式 355
7.2 單純形算法 358
7.2.1 單純形算法的例子 358
7.2.2 軸轉操作 361
7.2.3 正規的單純形算法 364
7.3 初始基本可行解 372
7.4 應用——將組合優化問題形式化為線性規劃 381
7.5 小結 385

第8章 圖形學基礎——計算幾何 386
8.1 線段的性質 386
8.1.1 叉積及其應用 387
8.1.2 程序實現 390
8.2 判斷是否存在線段相交 393
8.2.1 算法描述與分析 394
8.2.2 程序實現 397
8.3 求凸殼 401
8.3.1 Graham掃描 402
8.3.2 Jarvis行進 409
8.4 求最鄰近點對 412
8.4.1 算法描述與分析 413
8.4.2 程序實現 416
8.5 應用 418
8.5.1 光導管 418
8.5.2 最小邊界矩形 420
8.5.3 得克薩斯一日游 422
8.6 小結 423

第9章 實驗指南 424
9.1 實驗平臺的搭建 424
9.1.1 C、C++語言的實驗平臺 424
9.1.2 Java語言的實驗平臺 425
9.2 代碼驗證 429
9.2.1 C語言代碼驗證 429
9.2.2 C++語言代碼驗證 434
9.2.3 Java語言代碼驗證 435
9.3 自主實驗 436
9.3.1 C語言環境 436
9.3.2 C++語言環境 438
9.3.3 Java語言環境 439

附錄 442
參考文獻 455

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *