预购商品
书目分类
特别推荐
本書以海量圖解的形式,詳細講解常用的資料結構與演算法,又融入大量的競賽實例和解題技巧。通過對本書的學習,讀者可掌握12種初級資料結構、15種常用STL函數、10種二叉樹和圖的應用,以及8種搜索技術,並領悟不同的資料結構和演算法的精髓,熟練應用各種演算法解決實際問題。 本書總計9章。第1章講解C++語言基礎,包括語法、函數、遞迴和陣列;第2章講解演算法入門知識,包括演算法複雜度計算、貪心演算法、分治演算法和STL應用;第3章講解線性表的應用,包括順序表、單鏈表、雙向鏈表、迴圈鏈表和靜態鏈表;第4章講解棧和佇列的應用,包括順序棧、鏈棧、順序佇列和鏈佇列;第5章講解樹的應用,包括樹的存儲、二叉樹遍歷與還原、哈夫曼編碼;第6章講解圖論基礎,包括圖的存儲、圖的遍歷和圖的連通性;第7章講解圖的應用,包括最短路徑、最小生成樹、拓撲排序和關鍵路徑;第8章講解查找演算法,包括雜湊表、字串模式匹配、二叉查找樹和平衡二叉樹;第9章講解搜索技術,包括二分搜索、深度優先搜索、廣度優先搜索和啟發式搜索。 本書面向對演算法感興趣的讀者,無論是想扎實內功或參加演算法競賽的學生,還是想進入名企的學生、求職者,抑或是想提升技術的在職人員,都可以參考本書。若讀者想學習資料結構與演算法方面的進階知識,則可參考《演算法訓練營:海量圖解+競賽刷題(進階篇)》。
第1章 語言基礎 1 1.1 開啟演算法之旅:hello world! 1 1.2 常見資料類型及其表達範圍 2 1.3 玩轉輸入輸出 2 1.4 人生就是不斷地選擇:if…else 9 1.5 每天都有很多次重複:for/while 13 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 vector 65 訓練 間諜 67 2.4.2 棧 68 訓練 Web導航 69 2.4.3 queue 75 訓練 騎士移動 75 2.4.4 list 77 訓練 士兵佇列訓練 78 2.4.5 deque 79 訓練 度度熊學佇列 80 2.4.6 priority_queue 82 訓練 黑盒子 83 2.4.7 bitset 85 訓練 集合運算 88 2.4.8 set/multiset 90 訓練1 集合合併 91 訓練2 並行處理 92 2.4.9 map/multimap 94 訓練1 硬木種類 96 訓練2 雙重佇列 97 訓練3 水果 99 2.4.10 STL的常用函數 100 訓練1 差的中位數 106 訓練2 中位數 108 訓練3 訂單管理 109 訓練4 字謎 110 第3章 線性表的應用 112 3.1 順序表 112 3.2 單鏈表 116 3.3 雙向鏈表 119 3.4 迴圈鏈表 122 3.5 靜態鏈表 123 訓練1 區塊世界 126 訓練2 悲劇文本 132 訓練3 移動盒子 133 第4章 棧和佇列的應用 140 4.1 順序棧 140 4.2 鏈棧 143 4.3 順序佇列 146 4.4 鏈佇列 155 訓練1 括弧匹配 158 訓練2 鐵軌 160 訓練3 矩陣連乘 164 訓練4 列印佇列 168 訓練5 併發模擬器 171 第5章 樹的應用 187 5.1 樹 187 5.1.1 樹的存儲 190 5.1.2 樹、森林與二叉樹的轉換 193 5.2 二叉樹 194 5.2.1 二叉樹的性質 195 5.2.2 二叉樹的存儲結構 200 5.2.3 二叉樹的創建 202 5.3 二叉樹遍歷 210 5.3.1 先序遍歷 210 5.3.2 中序遍歷 214 5.3.3 後序遍歷 217 5.3.4 層次遍歷 221 5.3.5 遍歷序列還原樹 224 訓練1 新二叉樹 228 訓練2 還原樹 229 訓練3 樹 230 5.4 哈夫曼樹 232 原理 哈夫曼編碼 232 訓練1 圍欄修復 245 訓練2 資訊熵 246 訓練3 轉換哈夫曼編碼 248 訓練4 可變基哈夫曼編碼 251 第6章 圖論基礎 256 6.1 圖的存儲 257 6.1.1 鄰接矩陣 257 6.1.2 邊集陣列 263 6.1.3 鄰接表 263 6.1.4 鏈式前向星 271 訓練1 最大的節點 274 訓練2 有向圖D和E 276 訓練3 奶牛排序 278 6.2 圖的遍歷 279 6.2.1 廣度優先遍歷 279 6.2.2 深度優先遍歷 283 訓練1 油田 287 訓練2 理想路徑 290 訓練3 騎士的旅程 293 訓練4 抓住那頭牛 295 6.3 圖的連通性 298 6.3.1 連通性的相關知識 298 6.3.2 Tarjan演算法 302 訓練1 電話網絡 306 訓練2 道路建設 308 訓練3 圖的底部 311 訓練4 校園網路 313 第7章 圖的應用 316 7.1 最短路徑 316 7.1.1 Dijkstra演算法 316 7.1.2 Floyd演算法 322 7.1.3 Bellman-Ford演算法 326 7.1.4 SPFA演算法 328 訓練1 重型運輸 329 訓練2 貨幣兌換 331 訓練3 蟲洞 332 訓練4 最短路徑 335 7.2 最小生成樹 336 7.2.1 Prim演算法 337 7.2.2 Kruskal演算法 346 訓練1 叢林之路 351 訓練2 聯網 352 訓練3 空間站 354 訓練4 道路建設 356 7.3 拓撲排序 358 原理 拓撲排序 358 訓練1 家族樹 362 訓練2 全排序 364 訓練3 標籤球 366 訓練4 秩序 369 7.4 關鍵路徑 371 原理 關鍵路徑 371 訓練1 關鍵路徑 380 訓練2 指令安排 382 訓練3 家務瑣事 384 訓練4 免費DIY之旅 385 訓練5 遊戲玩家 388 第8章 查找演算法 391 8.1 雜湊表 391 8.1.1 散列函數 392 8.1.2 處理衝突的方法 394 8.1.3 散列查找及性能分析 404 訓練1 雪花 406 訓練2 公式 407 訓練3 正方形 409 8.2 字串模式匹配 411 8.2.1 BF演算法 412 8.2.2 KMP演算法 415 訓練1 統計單詞數 421 訓練2 KMP字串匹配 423 8.3 二叉查找樹 424 原理 二叉查找樹詳解 424 訓練1 落葉 436 訓練2 完全二叉搜尋樹 439 訓練3 硬木種類 441 訓練4 二叉搜尋樹 442 8.4 平衡二叉樹 444 原理 AVL樹詳解 445 訓練1 平衡二叉樹 458 訓練2 雙重佇列 461 訓練3 黑盒子 464 訓練4 硬木種類 465 第9章 搜索技術 466 9.1 二分搜索 466 原理 二分搜索技術 466 訓練1 跳房子遊戲 471 訓練2 烘乾衣服 475 訓練3 花環 477 訓練4 電纜切割 479 9.2 深度優先搜索 480 9.2.1 回溯法 480 9.2.2 子集樹 483 9.2.3 m叉樹 491 9.2.4 排列樹 499 訓練1 魅力手鐲 515 訓練2 圖的m著色問題 516 訓練3 N皇后問題 517 9.2.5 DFS+剪枝優化 517 訓練1 數獨遊戲 518 訓練2 生日蛋糕 521 訓練3 木棒 522 9.3 廣度優先搜索 524 9.3.1 分支限界法 525 9.3.2 佇列式廣度優先搜索 525 9.3.3 優先佇列式廣度優先搜索 535 訓練1 迷宮問題 541 訓練2 加滿油箱 542 9.3.4 嵌套廣度優先搜索 545 訓練 推箱子 545 9.3.5 雙向廣度優先搜索 549 訓練 魔鬼Ⅱ 549 9.4 啟發式搜索 551 9.4.1 A演算法 552 9.4.2 IDA演算法 552 訓練1 八數碼 552 訓練2 八數碼II 562 訓練3 第K短路 565 訓練4 冪運算 567
陳小玉 高級程式師,主要研究方向為演算法優化和機器學習。出版著作有《趣學演算法》《趣學資料結構》《演算法訓練營:海量圖解+競賽刷題(入門篇)》《演算法訓練營:海量圖解+競賽刷題(進階篇)》,所教學生多次獲得ACM、藍橋杯等演算法競賽獎項。
客服公告
热门活动
订阅电子报