|
-- 會員 / 註冊 --
|
|
|
|
算法學習與應用從入門到精通 ( 簡體 字) |
作者:張玲玲 | 類別:1. -> 程式設計 -> 演算法 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 45173 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:9/1/2016 |
頁數:489 |
光碟數:1 (含視頻教學) |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115418852 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 算法是程序的靈魂,只有掌握了算法,才能輕松地駕馭程序開發。算法能夠告訴開發者在面對一個項目功能時用什么思路去實現,有了這個思路后,編程工作只需遵循這個思路去實現即可。本書循序漸進、由淺入深地詳細講解了算法實現的核心技術,并通過具體實例的實現過程演練了各個知識點的具體使用流程。 全書共20章,其中,第1章講解了算法為什么是程序的靈魂;第2∼8章分別講解了常用的算法,如線性表、隊列和棧,樹,圖,查找算法,內部排序算法,外部排序算法等知識,這些內容都是算法技術核心的語法知識;第9∼15章分別講解了經典的數據結構問題、解決數學問題、解決趣味問題、解決圖像問題、算法的經典問題、解決奧賽問題、常見算法應用實踐等高級編程技術,這些內容是算法技術的重點和難點;第16∼20章分別通過5個綜合實例的實現過程,介紹了算法在綜合開發項目中的使用流程和發揮的作用。全書內容以“技術解惑”和“實踐應用”貫穿全書,引領讀者全面掌握算法的核心技術。 本書不但適合算法研究和學習的初學者,也適合有一定算法基礎的讀者,還可以作為大中專院校相關專業師生的學習用書和培訓學校的教材。
|
目錄:第1章 算法是程序的靈魂 1 (視頻總計18分鐘,技術解惑1個) 1.1 算法的基礎 2 1.1.1 算法的特征 2 1.1.2 何為算法 2 1.2 計算機中的算法 3 1.2.1 認識計算機中的算法 3 1.2.2 為什么說算法是程序的 靈魂 4 1.3 在計算機中表示算法的方法 4 1.3.1 用流程圖來表示算法 4 1.3.2 用N-S流程圖來表示算法 6 1.3.3 用計算機語言表示算法 6 1.4 技術解惑 6 第2章 常用的算法思想 8 (視頻總計51分鐘,實例15個,技術解惑8個) 2.1 枚舉算法思想 9 2.1.1 枚舉算法基礎 9 2.1.2 實戰演練—百錢買百雞 9 2.1.3 實戰演練—解決 “填寫運算符”問題 10 2.2 遞推算法思想 12 2.2.1 遞推算法基礎 12 2.2.2 實踐演練—解決 “斐波那契數列”問題 12 2.2.3 實踐演練—解決 “銀行存款”問題 14 2.3 遞歸算法思想 15 2.3.1 遞歸算法基礎 15 2.3.2 實踐演練—解決“漢諾塔” 問題 16 2.3.3 實踐演練—解決“階乘” 問題 18 2.4 分治算法思想 19 2.4.1 分治算法基礎 19 2.4.2 實踐演練—解決 “大數相乘”問題 19 2.4.3 實踐演練—歐洲冠軍杯 比賽日程安排 21 2.5 貪心算法思想 23 2.5.1 貪心算法基礎 23 2.5.2 實踐演練—解決“裝箱” 問題 24 2.5.3 實踐演練—解決 “找零方案”問題 26 2.6 試探法算法思想 27 2.6.1 試探法算法基礎 27 2.6.2 實踐演練—解決 “八皇后”問題 28 2.6.3 實踐演練—體彩29選 7彩票組合 29 2.7 迭代算法 30 2.7.1 迭代算法基礎 30 2.7.2 實踐演練—解決 “求平方根”問題 31 2.8 模擬算法思想 32 2.8.1 模擬算法的思路 32 2.8.2 實踐演練—解決 “猜數字游戲”問題 32 2.8.3 實踐演練—解決 “擲骰子游戲”問題 33 2.9 技術解惑 34 2.9.1 衡量算法的標準是什么 34 2.9.2 在什么時候選擇使用 枚舉法 36 2.9.3 遞推和遞歸有什么差異 36 2.9.4 總結分治法能解決什么 類型的問題 37 2.9.5 分治算法的機理是什么 37 2.9.6 為什么說貪婪算法并不是最 優解決問題的方案 37 2.9.7 回溯算法會影響算法 效率嗎 38 2.9.8 遞歸算法與迭代算法 有什么區別 38 第3章 線性表、隊列和棧 39 (視頻總計35分鐘,實例9個,技術解惑5個) 3.1 線性表詳解 40 3.1.1 線性表的特性 40 3.1.2 順序表操作 41 3.1.3 實踐演練—順序表操作 函數 44 3.1.4 實踐演練—操作順 序表 45 3.1.5 鏈表操作 48 3.1.6 實踐演練—定義鏈表操作 函數 51 3.1.7 實踐演練—操作鏈表 52 3.2 先進先出的隊列詳解 53 3.2.1 什么是隊列 54 3.2.2 鏈隊列和循環隊列 55 3.2.3 隊列的基本操作 55 3.2.4 隊列的鏈式存儲 55 3.2.5 實踐演練—完整的順序 隊列的操作 56 3.2.6 實踐演練—完整的循環 隊列的操作 57 3.2.7 實踐演練—實現一個 排號程序 59 3.3 后進先出棧 60 3.3.1 什么是棧 61 3.3.2 棧的基本分類 61 3.3.3 實踐演練—棧操作 函數 63 3.3.4 實踐演練—測試棧 操作 64 3.4 技術解惑 65 3.4.1 線性表插入操作的時間 復雜度是多少 65 3.4.2 線性表刪除操作的時間 復雜度是多少 65 3.4.3 線性表按值查找操作的 時間復雜度是多少 66 3.4.4 線性表鏈接存儲(單鏈表) 操作的11種算法是什么 66 3.4.5 堆和棧的區別是什么 70 第4章 樹 71 (視頻總計35分鐘,實例9個,技術解惑5個) 4.1 樹基礎 72 4.1.1 什么是樹 72 4.1.2 樹的相關概念 72 4.2 二叉樹詳解 73 4.2.1 二叉樹的定義 73 4.2.2 二叉樹的性質 74 4.2.3 二叉樹存儲 75 4.2.4 操作二叉樹 77 4.2.5 遍歷二叉樹 79 4.2.6 線索二叉樹 82 4.2.7 實踐演練—測試二叉樹 操作函數 85 4.2.8 實踐演練—C++的二叉樹 操作 87 4.2.9 實踐演練—實現各種線索 二叉樹的操作 89 4.2.10 實踐演練—測試線索 二叉樹的操作 91 4.3 霍夫曼樹 92 4.3.1 霍夫曼樹基礎 93 4.3.2 實踐演練—實現各種 霍夫曼樹操作 95 4.3.3 實踐演練—測試霍夫曼樹 的操作 97 4.3.4 總結霍夫曼編碼的算法 實現 98 4.4 技術解惑 100 4.4.1 樹和二叉樹的差別是 什么 100 4.4.2 二叉樹和鏈表的效率誰 更牛 100 4.4.3 如何打印二叉樹中的 所有路徑 100 第5章 圖 101 (視頻總計40分鐘,實例8個,技術解惑4個) 5.1 圖的起源 102 5.2 圖的相關概念 103 5.3 存儲結構 105 5.3.1 表示頂點之間相鄰關系的 鄰接矩陣 106 5.3.2 鄰接表 107 5.3.3 十字鏈表 108 5.3.4 實踐演練—創建一個鄰接 矩陣 109 5.3.5 實踐演練—測試霍夫曼樹 的操作 111 5.4 圖的遍歷 112 5.4.1 深度優先搜索 113 5.4.2 廣度優先搜索 114 5.4.3 實踐演練—求一條包含 圖中所有頂點的簡單 路徑 117 5.4.4 實踐演練—求距v0的 各頂點中最短路徑長度 最長的一個頂點 118 5.4.5 實踐演練—實現圖的 遍歷操作方法 118 5.4.6 實踐演練—實現圖的 遍歷操作 120 5.5 圖的連通性 120 5.5.1 無向圖連通分量 121 5.5.2 最小生成樹 121 5.5.3 實踐演練—創建一個最小 生成樹 123 5.5.4 實踐演練—調用最小生成 樹函數實現操作 123 5.5.5 關鍵路徑 124 5.6 尋求最短路徑 128 5.6.1 求某一頂點到其他各頂點的 最短路徑 128 5.6.2 任意一對頂點間的 最短路 129 5.6.3 實踐演練—創建最短路徑 算法函數 131 5.6.4 實踐演練—調用最短路徑 算法實現測試 132 5.7 技術解惑 132 5.7.1 幾種最短路徑算法的 比較 132 5.7.2 鄰接矩陣與鄰接表的 對比 134 5.7.3 如何表示有向圖的十字鏈表 存儲 135 5.7.4 比較深度優先算法和廣度 優先算法 135 第6章 查找算法 136 (視頻總計37分鐘,實例8個,技術解惑3個) 6.1 幾個相關概念 137 6.2 基于線性表的查找法 137 6.2.1 順序查找法 137 6.2.2 實踐演練—實現順序查找 算法 138 6.2.3 實踐演練—改進的順序 查找算法 139 6.2.4 折半查找法 140 6.2.5 實踐演練—使用折半查找 算法查找數據 140 6.2.6 實踐演練—查找10個已 排好序的數 141 6.2.7 分塊查找法 142 6.3 基于樹的查找法 143 6.3.1 二叉排序樹 143 6.3.2 實踐演練—將數據插入到 二叉樹節點中 147 6.3.3 實踐演練—刪除二叉樹中 一個節點 148 6.3.4 平衡二叉排序樹 150 6.4 哈希法 155 6.4.1 哈希法的基本思想 155 6.4.2 構造哈希函數 155 6.4.3 處理沖突 156 6.4.4 哈希表的查找過程 157 6.5 索引查找 158 6.5.1 索引查找的過程 158 6.5.2 實踐演練—索引查找法 查找指定的關鍵字 158 6.5.3 實踐演練—實現索引查找并插入一個新關鍵字 160 6.6 技術解惑 161 6.6.1 分析查找算法的性能 161 6.6.2 演示對二叉樹的完整 操作 162 6.6.3 分析哈希法的性能 164 第7章 內部排序算法 166 (視頻總計39分鐘,實例10個,技術解惑6個) 7.1 排序基礎 167 7.1.1 排序的目的和過程 167 7.1.2 內部排序與外部排序 167 7.1.3 穩定排序與不穩定排序 167 7.2 插入排序算法 168 7.2.1 直接插入排序 168 7.2.2 實踐演練—編寫直接插入 排序算法 169 7.2.3 實踐演練—插入排序算法 對數據進行排序處理 169 7.2.4 折半插入排序 170 7.2.5 表插入排序 170 7.2.6 希爾排序 171 7.2.7 實踐演練—使用希爾排序 算法對數據進行排序 處理 172 7.2.8 實踐演練—使用希爾排序 處理數組 173 7.3 交換類排序法 174 7.3.1 冒泡排序(相鄰比序法) 174 7.3.2 快速排序 174 7.3.3 實踐演練—用冒泡排序 算法實現對數據的排序 處理 175 7.3.4 實踐演練—使用快速排序 算法 177 7.4 選擇類排序法 178 7.4.1 直接選擇排序 178 7.4.2 樹形選擇排序 179 7.4.3 堆排序 179 7.4.4 實踐演練—直接選擇排序 算法對數據的排序處理 181 7.4.5 實踐演練—堆排序算法 實現排序處理 182 7.5 歸并排序 183 7.5.1 歸并排序思想 183 7.5.2 兩路歸并算法的思路 184 7.5.3 實現歸并排序 185 7.5.4 實踐演練—用歸并算法 實現排序處理 186 7.5.5 實踐演練—使用歸并排序 算法求逆序對 188 7.6 基數排序 189 7.6.1 多關鍵字排序 189 7.6.2 鏈式基數排序 189 7.7 技術解惑 192 7.7.1 插入排序算法的描述是 什么 192 7.7.2 希爾排序和插入排序誰 更快 192 7.7.3 快速排序的時間耗費是 多少 192 7.7.4 堆排序與直接選擇排序的 區別是什么 193 7.7.5 歸并排序的效率如何,應該 如何選擇 193 7.7.6 綜合比較各種排序方法 193 第8章 外部排序算法 195 (視頻總計32分鐘) 8.1 外部信息概覽 196 8.1.1 磁帶存儲器 196 8.1.2 磁盤存儲器 197 8.2 外部排序的基本方法 198 8.2.1 磁盤排序 198 8.2.2 磁帶排序 201 8.3 文件的基礎知識 204 8.4 文件組織方式 205 8.4.1 順序文件 205 8.4.2 索引文件 205 8.4.3 ISAM文件 206 8.4.4 VSAM文件 207 8.4.5 散列文件 209 8.4.6 多關鍵字文件 209 第9章 經典的數據結構問題 211 (視頻總計31分鐘,實例5個) 9.1 約瑟夫環 212 9.2 大整數運算 214 9.2.1 數組實現大整數運算 214 9.2.2 鏈表實現大整數運算 220 9.3 計算機進制轉換 224 9.4 中序表達式轉換為后序表達式 227 第10章 解決數學問題 231 (視頻總計36分鐘,實例12個) 10.1 最大公約數和最小公倍數 232 10.2 哥德巴赫猜想 233 10.3 完全數 235 10.4 親密數 237 10.5 自守數 238 10.6 方程求解 239 10.6.1 用高斯消元法解方程組 239 10.6.2 用二分法解非線性 方程 242 10.6.3 用牛頓迭代法解非線性 方程 243 10.7 矩陣運算 244 10.8 實現n×n整數方陣的轉置 246 10.9 一元多項式運算 247 10.9.1 一元多項式的加法運算 247 10.9.2 一元多項式的減法 運算 250 第11章 解決趣味問題 257 (視頻總計43分鐘,實例16個) 11.1 歌星大獎賽 258 11.2 借書方案 258 11.3 打魚還是曬網 259 11.4 捕魚和分魚 260 11.5 出售金魚 261 11.6 平分七筐魚 262 11.7 繩子的長度和井深 263 11.8 雞兔同籠 264 11.9 漢諾塔 265 11.9.1 遞歸法 266 11.9.2 非遞歸法 267 11.10 馬踏棋盤 268 11.10.1 使用循環查找法 269 11.10.2 使用遞歸法 271 11.10.3 使用棧方法 272 11.11 三色球問題 275 11.12 新郎和新娘問題 276 11.13 計算年齡 278 第12章 解決圖像問題 279 (視頻總計31分鐘,實例6個) 12.1 “八皇后”問題 280 12.1.1 使用遞歸法 280 12.1.2 使用循環法 282 12.2 生命游戲 284 12.3 黑白棋問題 287 12.4 “騎士迷宮”問題 293 12.5 找出迷宮問題中的所有路徑 298 第13章 算法的經典問題 300 (視頻總計36分鐘,實例8個) 13.1 存錢利息最大化 301 13.2 背包問題 303 13.2.1 使用動態規劃法 303 13.2.2 使用遞歸法 307 13.3 農夫過河 309 13.4 三色旗問題 311 13.5 取石子 313 13.6 停車場管理 316 13.7 約瑟夫生死者游戲 323 第14章 解決奧賽問題 325 (視頻總計55分鐘,實例7個) 14.1 孿生素數問題 326 14.2 百錢買百雞問題 327 14.3 馬克思手稿中的數學題 328 14.4 正整數分解質因數 329 14.5 水仙花數 330 14.6 素數 330 14.6.1 求1000以內的所有 素數 331 14.6.2 求1000以內的回文 素數 332 14.6.3 求1000以內的平方回 文數 333 14.7 階乘 333 14.7.1 使用遞歸法 334 14.7.2 實現大數的階乘 335 14.8 青蛙過河 339 14.9 過河卒 342 14.10 素數組合 344 14.11 校驗碼問題 346 14.12 老師排座位 347 14.13 模擬立體圖 349 14.14 采藥問題 351 14.15 等價表達式問題 352 14.16 購買年貨問題 355 第15章 常見算法應用實踐 358 (視頻總計26分鐘,實例7個) 15.1 實現Ping功能中的校驗和 算法 359 15.2 24點游戲算法 363 15.3 洗牌 368 15.4 21點游戲 370 15.5 2048游戲 375 15.6 引用計數算法 386 15.7 貓捉老鼠游戲 388 第16章 俄羅斯方塊游戲 393 (視頻總計42分鐘,綜合實例1個) 16.1 游戲功能描述 394 16.2 游戲總體設計 394 16.2.1 功能模塊設計 394 16.2.2 數據結構設計 396 16.2.3 構成函數介紹 397 16.3 游戲具體實現 398 16.3.1 預處理 398 16.3.2 主函數—遞歸算法 400 16.3.3 初始化界面處理— 分治算法 401 16.3.4 時鐘中斷處理 402 16.3.5 成績、速度和幫助 處理 403 16.3.6 滿行處理—碰撞檢 測算法 403 16.3.7 方塊顯示和消除處理— 分治算法 405 16.3.8 游戲方塊操作判斷 處理—枚舉算法 406 第17章 學生成績管理系統 409 (視頻總計36分鐘,綜合實例1個) 17.1 系統總體描述 410 17.1.1 開發目標和項目背景 介紹 410 17.1.2 系統功能模塊 410 17.2 系統總體設計 411 17.2.1 功能模塊設計 411 17.2.2 數據結構設計 413 17.2.3 構成函數介紹 413 17.3 系統具體實現 415 17.3.1 預處理 415 17.3.2 主函數main— 遞歸算法 415 17.3.3 系統主菜單函數— 模擬算法 416 17.3.4 表格顯示信息 417 17.3.5 信息查找定位— 分治算法 417 17.3.6 格式化輸入數據— 遞歸、分治算法 418 17.3.7 增加學生記錄— 試探算法 418 17.3.8 查詢學生記錄— 分治算法 419 17.3.9 刪除學生記錄—分治、 遞歸算法 420 17.3.10 修改學生記錄—遞歸、 模擬算法 421 17.3.11 插入學生記錄— 遞推算法 421 17.3.12 統計學生記錄— 分治算法 423 17.3.13 排序處理—插入排序 算法 423 17.3.14 存儲學生信息 424 第18章 繪圖板系統 428 (視頻總計42分鐘,綜合實例1個) 18.1 項目規劃分析 429 18.1.1 繪圖板的核心技術 429 18.1.2 功能描述 429 18.1.3 總體設計 429 18.2 設計數據結構 430 18.2.1 設計數據結構 430 18.2.2 規劃系統函數 430 18.3 具體編碼 432 18.3.1 預處理模塊 432 18.3.2 功能控制模塊—遞推、 遞歸算法 434 18.3.3 保存加載模塊— 遞歸算法 435 18.3.4 鼠標控制模塊—枚舉、 遞歸算法 436 18.3.5 圖形繪制模塊—遞歸、 分治、枚舉、遞推 算法 437 18.3.6 主函數模塊—模擬、 遞歸算法 447 18.4 項目調試 451 第19章 UDP傳輸系統 452 (視頻總計45分鐘,綜合實例1個) 19.1 項目規劃分析 453 19.1.1 功能描述 453 19.1.2 功能模塊設計 453 19.1.3 系統流程圖 454 19.1.4 廣播消息發送流程 454 19.1.5 廣播消息接收流程圖 455 19.1.6 多播消息接收流程圖 456 19.2 設計數據結構 457 19.2.1 定義常量 457 19.2.2 定義全局變量 458 19.3 規劃系統函數 458 19.4 具體編碼 459 19.4.1 預處理 460 19.4.2 初始化模塊處理 460 19.4.3 獲取參數— 枚舉算法 461 19.4.4 用戶幫助模塊— 遞歸算法 462 19.4.5 廣播信息發送模塊— 試探算法 463 19.4.6 廣播信息接收模塊— 試探算法 464 19.4.7 多播功能控制模塊— 試探算法 465 19.4.8 多播消息發送模塊— 試探算法 466 19.4.9 多播消息接收模塊— 試探算法 467 19.4.10 主函數—遞歸 算法 467 19.5 項目調試 468 第20章 推箱子游戲 469 (視頻總計43分鐘,綜合實例1個) 20.1 項目規劃分析 470 20.1.1 功能描述 470 20.1.2 功能模塊分析 470 20.1.3 剖析執行流程 470 20.2 設計數據結構 472 20.3 規劃系統函數 472 20.4 具體編碼 475 20.4.1 預處理 475 20.4.2 初始化模塊— 遞歸算法 475 20.4.3 畫圖模塊— 試探算法 478 20.4.4 移動箱子模塊—試探、 分治、遞歸、枚舉算法 479 20.4.5 移動小人模塊—枚舉、 試探算法 482 20.4.6 功能控制模塊—遞歸、 分治算法 486 20.4.7 系統主函數—枚舉、 模擬、遞歸、試探算法 487 20.5 項目調試 488 |
序: |
|