出版社:電子工業 ISBN:9787121414428 商品編碼:10033476388009 開本:16開 出版時間:2021-07-01 代碼:129 作者:陳小玉
" 基本信息- 商品名稱:算法訓練營:海量圖解+競賽刷題(入門篇)
- 作者:陳小玉
- 代碼:129.8
- 出版社:電子工業
- 書號:9787121414428
其他參考信息- 出版時間:2021-07-01
- 印刷時間:2021-06-24
- 版次:1
- 印次:1
- 開本:16開
- 包裝:平裝
- 頁數:568
- 字數:810千字
內容提要本書以海量圖解的形式,詳細講解常用的數據結構與算法,又融入大量的競賽實例和解題技巧。通過對本書的學習,讀者可掌握12種初級數據結構、15種常用STL函數、10種二叉樹和圖的應用,以及8種搜索技術,並領悟不同的數據結構和算法的精髓,熟練應用各種算法解決實際問題。本書總計9章。第1章講解C++語言基礎,包括語法、函數、遞歸和數組;第2章講解算法入門知識,包括算法復雜度計算、貪心算法、分治算法和STL應用;第3章講解線性表的應用,包括順序表、單鏈表、雙向鏈表、循環鏈表和靜態鏈表;第4章講解棧和隊列的應用,包括順序棧、鏈棧、順序隊列和鏈隊列;第5章講解樹的應用,包括樹的存儲、二叉樹遍歷與還原、哈夫曼編碼;第6章講解圖論基礎,包括圖的存儲、圖的搜索和圖的連通性;第7章講解圖的應用,包括 短路徑、 小生成樹、拓撲排序和關鍵路徑;第8章講解查找算法,包括哈希表、字符串模式匹配、二叉搜索樹和平衡二叉樹;第9章講解搜索技術,包括二分搜索、深度優先搜索、廣度優先搜索和啟發式搜索。本書面向對算法感興趣的讀者,無論是想扎實內功或參加算法競賽的學生,還是想進入名企的學生、求職者,抑或是想提升技術的在職人員,都可以參考本書。若讀者想學習數據結構與算法方面的進階知識,則可參考《算法訓練營:海量圖解+競賽刷題(進階篇)》。 作者簡介陳小玉 南陽理工學院副教授, 程序員,主要研究方向為算法優化和機器學習。出版著作有《趣學算法》《趣學數據結構》《算法訓練營:海量圖解+競賽刷題(入門篇)》《算法訓練營:海量圖解+競賽刷題(進階篇)》,所教學生多次獲得ACM、藍橋杯等算法競賽獎項。 目錄目錄
第1章 語言基礎1 1.1 開啟算法之旅:hello world!1 1.2 常見數據類型及其表達範圍2 1.3 玩轉輸入輸出2 1.4 人生就是不斷地選擇:if…else9 1.5 每天都有很多次重復:for/while13 1.6 如何輕松寫一個函數20 1.7 從前有座山,山裡有座廟:遞歸 之法25 1.8 信息攜帶者:定義一個結構體29 1.9 巧用數組――好玩貪喫蛇31 1.10 玩轉字符串――不一樣的風格37 第2章 算法入門42 2.1 算法之美42 2.1.1 如何評價一個算法的優劣42 2.1.2 算法復雜度的計算方法45 2.2 貪心算法48 2.2.1 貪心本質48 2.2.2 裝載問題49 2.3 分治算法51 2.3.1 分治算法秘籍51 2.3.2 合並排序51 2.3.3 快速排序57 2.4 STL應用65 2.4.1 vector65 訓練1 間諜67 2.4.2 棧68 訓練2 Web導航69 2.4.3 queue75 訓練3 騎士移動75 2.4.4 list77 訓練4 士兵隊列訓練78 2.4.5 deque79 訓練5 度度熊學隊列80 2.4.6 priority_queue82 訓練6 黑盒子83 2.4.7 bitset85 訓練7 集合運算88 2.4.8 set/multiset90 訓練8 集合合並91 訓練9 並行處理92 2.4.9 map/multimap94 訓練10 硬木種類96 訓練11 雙重隊列97 訓練12 水果99 2.4.10 STL的常用函數100 訓練13 差的中位數106 訓練14 中位數109 訓練15 訂單管理109 訓練16 字謎110
第3章 線性表的應用113 3.1 順序表113 3.2 單鏈表117 3.3 雙向鏈表120 3.4 循環鏈表123 3.5 靜態鏈表124 訓練1 區塊世界127 訓練2 悲劇文本133 訓練3 移動盒子134 第4章 棧和隊列的應用141 4.1 順序棧141 4.2 鏈棧144 4.3 順序隊列147 4.4 鏈隊列156 訓練1 括號匹配159 訓練2 鐵軌161 訓練3 矩陣連乘165 訓練4 打印隊列169 訓練5 並發模擬器172 第5章 樹的應用188 5.1 樹188 5.1.1 樹的存儲191 5.1.2 樹、森林與二叉樹的轉換194 5.2 二叉樹195 5.2.1 二叉樹的性質196 5.2.2 二叉樹的存儲結構201 5.2.3 二叉樹的創建203 5.3 二叉樹遍歷211 5.3.1 先序遍歷211 5.3.2 中序遍歷215 5.3.3 後序遍歷218 5.3.4 層次遍歷222 5.3.5 遍歷序列還原樹225 訓練1 新二叉樹229 訓練2 還原樹230 訓練3 樹231 5.4 哈夫曼樹233 原理 哈夫曼編碼233 訓練1 圍欄修復246 訓練2 信息熵247 訓練3 轉換哈夫曼編碼249 訓練4 可變基哈夫曼編碼252 第6章 圖論基礎257 6.1 圖的存儲258 6.1.1 鄰接矩陣258 6.1.2 邊集數組264 6.1.3 鄰接表264 6.1.4 鏈式前向星272 訓練1 圖的遍歷275 訓練2 有向圖D和E277 訓練3 奶牛排序279 6.2 圖的搜索280 6.2.1 廣度優先搜索280 6.2.2 深度優先搜索284 訓練1 油田288 訓練2 理想路徑291 訓練3 騎士的旅程294 訓練4 抓住那頭牛296 6.3 圖的連通性299 6.3.1 連通性的相關知識299 6.3.2 Tarjan算法303 訓練1 電話網絡307 訓練2 道路建設309 訓練3 圖的底部312 訓練4 校園網絡314 第7章 圖的應用317 7.1 短路徑317 7.1.1 Dijkstra算法317 7.1.2 Floyd算法323 7.1.3 Bellman-Ford算法327 7.1.4 SPFA算法329 訓練1 重型運輸330 訓練2 貨幣兌換332 訓練3 蟲洞333 訓練4 短路徑336 7.2 小生成樹337 7.2.1 Prim算法338 7.2.2 Kruskal算法347 訓練1 叢林之路352 訓練2 聯網353 訓練3 空間站355 訓練4 道路建設357 7.3 拓撲排序359 原理 拓撲排序359 訓練1 家族樹363 訓練2 全排序365 訓練3 標簽球367 訓練4 秩序370 7.4 關鍵路徑372 原理 關鍵路徑372 訓練1 關鍵路徑381 訓練2 指令安排383 訓練3 家務瑣事385 訓練4 免費DIY之旅386 訓練5 遊戲玩家389 第8章 查找算法392 8.1 哈希表392 8.1.1 散列函數393 8.1.2 處理衝突的方法395 8.1.3 散列查找及性能分析405 訓練1 雪花407 訓練2 公式408 訓練3 正方形410 8.2 字符串模式匹配412 8.2.1 BF算法413 8.2.2 KMP算法416 訓練1 統計單詞數422 訓練2 KMP字符串匹配424 8.3 二叉查找樹425 原理 二叉查找樹詳解425 訓練1 落葉437 訓練2 二叉搜索樹440 訓練3 硬木種類442 訓練4 二叉搜索樹443 8.4 平衡二叉樹445 原理 AVL樹詳解446 訓練1 平衡二叉樹459 訓練2 雙重隊列462 訓練3 黑盒子465 訓練4 硬木種類466 第9章 搜索技術467 9.1 二分搜索467 原理 二分搜索技術467 訓練1 跳房子遊戲472 訓練2 烘干衣服476 訓練3 花環478 訓練4 電纜切割480 9.2 深度優先搜索481 9.2.1 回溯法481 9.2.2 子集樹484 9.2.3 m叉樹492 9.2.4 排列樹500 訓練1 魅力手鐲516 訓練2 圖的m著色問題517 訓練3 N皇後問題518 9.2.5 DFS+剪枝優化518 訓練4 數獨遊戲519 訓練5 生日蛋糕522 訓練6 木棒523 9.3 廣度優先搜索525 9.3.1 分支限界法526 9.3.2 隊列式廣度優先搜索526
9.3.3 優先隊列式廣度優先搜索536 訓練1 迷宮問題542 訓練2 加滿油箱543 9.3.4 嵌套廣度優先搜索547 訓練3 推箱子547 9.3.5 雙向廣度優先搜索550 訓練4 魔鬼Ⅱ550 9.4 啟發式搜索553 9.4.1 A*算法553 9.4.2 IDA*算法554 訓練1 八數碼554 訓練2 八數碼II564 訓練3 第K短路567 訓練4 冪運算569
" |