《編程算法新手自學手冊》是2012年2月1日機械工業出版社出版的圖書,作者是管西京。本書循序漸進、由淺入深地詳細講解了基於C語言算法的核心技術,並通過具體實例的實現過程演練了各個知識點的具體使用流程。
基本介紹
- 書名:編程算法新手自學手冊
- 作者:管西京
- ISBN:9787111367239
- 頁數:445頁
- 出版社:機械工業出版社
- 出版時間:2012年2月1日
- 裝幀:平裝
- 開本:16
內容簡介,目錄,
內容簡介
程式設計師都會看重數據結構和算法的作用,水平越高,就越能理解算法的重要性。算法不僅是運算工具,更是程式的靈魂。《編程算法新手自學手冊》全書共11章,分為4篇。1~2章是基礎篇,介紹算法開發所必需具備的基本知識,逐一講解了9種算法思想的知識;3~5章是核心技術篇,逐一講解了線性結構、樹層次關係結構、網狀關係結構等基本知識;6~8章是提高篇,逐一講解了查找算法、內部排序算法、外部排序和檔案等知識;9~11章是典型實戰篇,分別詳細講解算法在數據結構和經典數學問題中的解法,通過多個典型實例的實現過程,詳細講解算法在常見領域中的綜合套用流程,並穿插介紹了項目的實現技巧。全書採用故事性與趣味性相結合的對話講解方式,並穿插了學習技巧和職場生存法則,引領讀者全面掌握算法。
《編程算法新手自學手冊》不但適用於算法的初學者,也適用於有一定C語言基礎的讀者。
目錄
前言
第1章 算法-程式的靈魂 1
1.1 了解算法 2
1.1.1 算法的特徵和發展由來 2
1.1.2 為什麼是程式的靈魂 2
1.1.3 何謂算法 3
1.1.4 算法的特性 4
1.2 算法的表示方法____流程圖 4
1.3 算法的另一種表示方法____N-S流程圖表示法 6
1.4 用計算機語言表示算法 6
1.5 算法在編程中的套用 6
1.6 總結 8
職場點撥____職場的"算法" 8
第2章 9種算法思想 10
2.1 枚舉算法思想 11
2.1.1 枚舉算法的特點 11
2.1.2 算法思路 11
2.1.3 套用實例 11
2.1.4 總結 14
2.2 遞推算法思想 15
2.2.1 遞推算法的思路 15
2.2.2 順推法實例 15
2.2.3 逆推法實例 16
2.3 遞歸算法思想 17
2.3.1 遞歸算法的特點 18
2.3.2 遞歸算法實例 18
2.4 分治算法思想 22
2.4.1 分治算法的思路 22
2.4.2 看一個經典問題-找出假幣 23
2.4.3 套用實例____大數相乘 23
2.4.4 套用實例____世界盃比賽日程安排 27
2.5 貪心算法思想 29
2.5.1 貪心算法的思路 29
2.5.2 套用實例____裝箱問題 30
2.5.3 套用實例____找零方案 33
2.6 試探法算法思想 34
2.6.1 試探法算法的思路 35
2.6.2 套用實例____八皇后問題 35
2.6.3 套用實例____彩票組合 37
2.7 動態規划算法 38
2.7.1 動態規划算法的思路 39
2.7.2 套用實例 39
2.8 疊代算法思想 41
2.8.1 疊代算法的思路 42
2.8.2 套用實例 42
2.9 模擬算法思想 43
2.9.1 模擬算法的思路 43
2.9.2 套用實例-猜數遊戲 44
2.9.3 套用實例-擲骰子遊戲 45
2.10 最後做一個評價 46
2.10.1 算法優劣標準 46
2.10.2 算法效率的衡量方法 47
職場點撥____程式設計師面試面面觀 48
第3章 最簡單的線性結構 50
3.1 線性表 50
3.1.1 線性表的特性 51
3.1.2 順序表的基本操作實現 52
3.1.3 鍊表基本操作實現 59
3.2 先進先出的結構____佇列 65
3.2.1 佇列簡介 65
3.2.2 佇列的抽象數據類型定義 66
3.2.3 鏈佇列和循環佇列 67
3.2.4 佇列的基本操作 67
3.2.5 佇列的鏈式存儲 68
3.2.6 套用實例____電信排號程式 73
3.3 後進先出的結構____棧 75
3.3.1 什麼是棧 75
3.3.2 棧的基本操作 76
3.3.3 套用實例 79
職場點撥____同事相處之道 82
第4章 層次關係結構____樹 84
4.1 基本概念 84
4.1.1 樹的定義 85
4.1.2 樹的相關術語 85
4.1.3 樹的基本操作概況 86
4.2 二叉樹 87
4.2.1 二叉樹的定義 87
4.2.2 二叉樹的性質 88
4.3 二叉樹的存儲 88
4.3.1 順序存儲結構 88
4.3.2 鏈式存儲結構 90
4.3.3 二叉樹操作 91
4.3.4 二叉樹遍歷 94
4.3.5 使用二叉樹 98
4.4 線索二叉樹 101
4.4.1 線索二叉樹的表示 101
4.4.2 線索二叉樹的操作 104
4.5 最優二叉樹____赫夫曼樹 109
4.5.1 幾個相關概念 109
4.5.2 構造赫夫曼樹的過程 110
4.5.3 赫夫曼編碼 111
職場點撥____談職業素養 117
第5章 網狀關係結構-圖 118
5.1 圖的定義 118
5.2 圖的幾個概念 119
5.3 圖的存儲結構 123
5.3.1 鄰接矩陣 123
5.3.2 鄰接表 124
5.3.3 十字鍊表 127
5.3.4 創建圖 128
5.4 圖的遍歷 133
5.4.1 深度優先搜尋 133
5.4.2 廣度優先搜尋 136
5.4.3 遍歷算法的常見套用 140
5.4.4 測試圖遍歷實例 142
5.5 圖的連通性問題 143
5.5.1 無向圖的連通分量 143
5.5.2 最小生成樹 143
5.5.3 關鍵路徑 147
5.6 最短路徑 152
5.6.1 求某一頂點到其他各頂點的最短路徑 152
5.6.2 求任意一對頂點間的最短路徑 156
職場點撥____和領導相處 158
第6章 常用算法____查找 160
6.1 查找的基本概念 160
6.2 基於線性表的查找法 161
6.2.1 順序查找法 161
6.2.2 折半查找法 165
6.2.3 分塊查找法 167
6.3 基於樹的查找法 168
6.3.1 二叉排序樹 168
6.3.2 平衡二叉排序樹 180
6.4 計算式查找法____散列法 186
6.4.1 散列函式的構造方法 187
6.4.2 處理衝突的方法 188
6.4.3 散列表的查找過程 190
6.4.4 散列法性能分析 191
6.5 索引查找 195
6.5.1 索引查找基礎 195
6.5.2 索引查找算法的套用 195
職場點撥____尋兼職 199
第7章 常用算法-內部排序 200
7.1 排序基礎 200
7.2 插入類排序 202
7.2.1 直接插入排序 202
7.2.2 折半插入排序 205
7.2.3 表插入排序 206
7.2.4 希爾排序 206
7.3 交換類排序法 209
7.3.1 冒泡排序(相鄰比序法) 209
7.3.2 快速排序 213
7.4 選擇類排序法 217
7.4.1 直接選擇排序(Straight Selection Sort) 217
7.4.2 樹形選擇排序 219
7.4.3 堆排序 220
7.5 歸併排序 225
7.5.1 歸併排序思想 225
7.5.2 二路歸併算法 226
7.5.3 歸併排序的實現方法 228
7.6 各種排序方法的綜合比較 231
職場點撥____兼職可靠嗎? 232
第8章 外部排序和檔案 234
8.1 外存信息的特性 235
8.1.1 磁帶存儲器 235
8.1.2 磁碟存儲器 236
8.2 外排序的基本方法 237
8.2.1 磁碟排序 237
8.2.2 磁帶排序 241
8.3 檔案的基本概念 243
8.3.1 檔案中的常用基本概念 244
8.3.2 檔案的有關操作 244
8.4 檔案的組織方式 245
8.4.1 順序檔案 245
8.4.2 索引檔案 245
8.4.3 ISAM檔案 246
8.4.4 VSAM檔案 248
8.4.5 散列檔案 249
8.4.6 多關鍵字檔案 250
職場點撥____換工作的注意事項 250
第9章 算法在數學領域中的套用 252
9.1 求兩個數的最大公約數和最低公倍數 252
9.2 哥德巴赫猜想的近似證明 254
9.3 三色球問題 257
9.4 百錢買百雞問題 258
9.5 完全數 260
9.6 親密數 262
9.7 水仙花數 264
9.8 自守數 264
9.9 素數 266
9.9.1 求素數 266
9.9.2 回文素數 268
9.9.3 平方迴文數 269
9.10 階乘 270
9.10.1 遞歸計算階乘 270
9.10.2 大數的階乘 272
9.11 新郎和新娘的問題 281
9.12 年齡幾何 283
9.13 三色球問題 284
9.14 馬克思手稿中的數學題 285
9.15 正整數分解質因數 286
9.16 方程求解 287
9.16.1 求解線性方程組介紹 287
9.16.2 求解非線性方程組介紹 288
9.16.3 高斯消元法求解線性方程組 288
9.16.4 二分法解非線性方程 293
9.16.5 牛頓疊代法解非線性方程 295
9.17 矩陣運算 297
9.18 孿生素數 301
9.18.1 孿生素數介紹 301
9.18.2 求解孿生素數 302
9.19 一元多項式運算 303
9.19.1 編程實現一元多項式的加法運算 303
9.19.2 編程實現一元多項式的減法運算 308
職場點撥____談學習方法 318
第10章 數據結構問題 319
10.1 約瑟夫環 320
10.2 大整數運算 323
10.2.1 用數組實現大整數運算 323
10.2.2 用鍊表實現大整數運算 333
10.3 計算機進制轉換 339
10.4 中序表達式轉換為後序表達式 344
職場點撥____團隊成員的素質 349
第11章 算法的經典問題 350
11.1 存錢利息最大化 351
11.2 歌星大獎賽 354
11.3 借書方案知多少 355
11.4 打魚還是曬網 356
11.5 捕魚和分魚 357
11.6 出售金魚 358
11.7 平分七筐魚 359
11.8 繩子的長度和井深 361
11.9 雞兔同籠 362
11.10 漢諾塔 363
11.10.1 遞歸法 364
11.10.2 非遞歸法 365
11.11 背包問題 368
11.11.1 動態規劃法 368
11.11.2 遞歸法 375
11.12 馬踏棋盤 378
11.12.1 循環查找 378
11.12.2 遞歸法實現 382
11.12.3 棧實現 384
11.13 八皇后問題 388
11.13.1 遞歸法 389
11.13.2 循環法 391
11.14 農夫過河 394
11.15 青蛙過河 397
11.16 三色旗 401
11.17 取石子 403
11.18 生命遊戲 407
11.19 黑白棋問題 412
11.20 停車場管理 422
11.21 約瑟夫生者死者遊戲 432
11.22 騎士迷宮問題 435
職場點撥____談升職 444