算法圖解(第2版) 版權信息
- ISBN:9787115649706
- 條形碼:9787115649706 ; 978-7-115-64970-6
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
算法圖解(第2版) 本書特色
※你一定能看懂的算法基礎書※代碼示例基于Python※400多幅示意圖,生動展示算法相關內容※介紹不同算法在性能方面的優缺點※教會你用常見算法解決每天面臨的實際編程問題本書不僅是一本專業的算法教科書,也是一本算法漫畫圖集。作者旨在通過有趣的漫畫帶領你穿越一團團算法迷霧,解析每一種算法背后的代碼精髓,并用通俗易懂的語言揭開這些算法實現的神秘面紗。無論你是算法初學者,還是已有一些基礎的開發者,本書都可以幫助你在學習算法的過程中找到樂趣。
——啊哈磊,《啊哈C語言!》《啊哈!算法》作者本書展示了圖解的獨特魅力,使抽象的算法知識變得簡單有趣、引人入勝!
——靳宇棟(@krahets),《Hello算法》作者本書通過易于理解的解釋和示意圖,讓你無須深入了解底層數學概念,也能輕松學習算法。
——Katie Sylor-Miller,Etsy
這是一本難得的將高效教學與愉快閱讀完美結合的算法書。
——Ben Vinegar,Syntax
這是一本插圖精美且清晰易懂的算法書。
——Stephen Diehl,Zerolink
這是我推薦給所有新人和希望進一步提升技能的高級程序員的首選圖書,它的亮點在于幫助你真正理解算法,而不僅僅是記住代碼。
——Alexander Manning,Block
算法圖解(第2版) 內容簡介
本書示例豐富,圖文并茂,以簡明易懂的方式闡釋了算法,旨在幫助程序員在日常項目中更好地利用算法為軟件開發助力。前三章介紹算法基礎,包括二分查找、大O表示法、兩種基本的數據結構以及遞歸等。余下的篇幅主要介紹應用廣泛的算法,具體內容包括:面對具體問題時的解決技巧,比如何時采用分而治之、貪婪算法或動態規劃,哈希表的應用,圖和樹算法,K*近鄰算法等。這一版將示例代碼更新到了Python3,并新增了兩章專門討論樹,加之諸多修訂,使得內容更加完善。本書適合程序員、計算機專業相關師生以及對算法感興趣的讀者閱讀。
算法圖解(第2版) 目錄
第 1章 算法簡介 1
1.1 引言 1
1.1.1 性能方面 1
1.1.2 問題解決技巧 2
1.2 二分查找 2
1.2.1 更佳的查找方式 4
1.2.2 運行時間 8
1.3 大O表示法 8
1.3.1 算法的運行時間以不同的速度增加 9
1.3.2 理解不同的大O運行時間 10
1.3.3 大O表示法指出了*糟情況下的運行時間 12
1.3.4 一些常見的大O運行時間 12
1.3.5 旅行商 14
1.4 小結 15
第 2章 選擇排序 16
2.1 內存的工作原理 16
2.2 數組和鏈表 18
2.2.1 鏈表 19
2.2.2 數組 20
2.2.3 術語 21
2.2.4 在中間插入 22
2.2.5 刪除 23
2.2.6 數組和鏈表哪個用得更多 24
2.3 選擇排序 27
2.4 小結 30
第3章 遞歸 31
3.1 遞歸 31
3.2 基線條件和遞歸條件 34
3.3 棧 35
3.3.1 調用棧 36
3.3.2 遞歸調用棧 38
3.4 小結 42
第4章 快速排序 43
4.1 分而治之 43
4.2 快速排序 50
4.3 再談大O表示法 55
4.3.1 比較合并排序和快速排序 56
4.3.2 平均情況和*糟情況 57
4.4 小結 60
第5章 散列表 61
5.1 散列函數 63
5.2 應用案例 67
5.2.1 將散列表用于查找 67
5.2.2 防止重復 68
5.2.3 將散列表用作緩存 70
5.2.4 小結 72
5.3 沖突 73
5.4 性能 75
5.4.1 填裝因子 77
5.4.2 良好的散列函數 78
5.5 小結 80
第6章 廣度優先搜索 81
6.1 圖簡介 82
6.2 圖是什么 84
6.3 廣度優先搜索 85
6.3.1 查找*短路徑 87
6.3.2 隊列 88
6.4 實現圖 89
6.5 實現算法 91
6.6 小結 98
第7章 樹 99
7.1 樹簡介 99
7.2 太空漫游:深度優先搜索 103
7.3 二叉樹 107
7.4 霍夫曼編碼 108
7.5 小結 113
第8章 平衡樹 114
8.1 平衡措施 115
8.2 樹越矮,速度越快 118
8.3 AVL樹——一種平衡樹 121
8.3.1 旋轉 121
8.3.2 AVL樹如何把握旋轉時機 123
8.4 伸展樹 128
8.5 B 樹 130
8.6 小結 133
第9章 迪杰斯特拉算法 134
9.1 使用迪杰斯特拉算法 135
9.2 術語 138
9.3 換鋼琴 140
9.4 負權邊 146
9.5 實現 148
9.6 小結 157
第 10章 貪婪算法 158
10.1 教室調度問題 158
10.2 背包問題 160
10.3 集合覆蓋問題 162
10.4 小結 168
第 11章 動態規劃 169
11.1 再談背包問題 169
11.1.1 簡單算法 170
11.1.2 動態規劃 171
11.2 背包問題FAQ 178
11.2.1 再增加一件商品將如何呢 178
11.2.2 行的排列順序發生變化時結果將如何 181
11.2.3 可以逐列而不是逐行填充網格嗎 181
11.2.4 增加一件更小的商品將如何呢 181
11.2.5 可以拿商品的一部分嗎 182
11.2.6 旅游行程*優化 182
11.2.7 處理相互依賴的情況 183
11.2.8 計算*終的解時會涉及兩個以上的子背包嗎 184
11.2.9 *優解可能導致背包沒裝滿嗎 184
11.3 *長公共子串 185
11.3.1 繪制網格 186
11.3.2 填充網格 186
11.3.3 揭曉答案 187
11.3.4 *長公共子序列 189
11.3.5 *長公共子序列之解決方案 190
11.4 小結 191
第 12章 K*近鄰算法 192
12.1 橙子還是柚子 192
12.2 創建推薦系統 194
12.2.1 特征提取 195
12.2.2 回歸 199
12.2.3 挑選合適的特征 201
12.3 機器學習簡介 202
12.3.1 OCR 202
12.3.2 創建垃圾郵件過濾器 203
12.3.3 預測股票市場 204
12.4 機器學習模型訓練概述 204
12.5 小結 206
第 13章 接下來如何做 207
13.1 線性回歸 207
13.2 反向索引 209
13.3 傅里葉變換 209
13.4 并行算法 210
13.5 映射/歸并 211
13.6 布隆過濾器和HyperLogLog 211
13.6.1 布隆過濾器 212
13.6.2 HyperLogLog 213
13.7 HTTPS和迪菲-赫爾曼密鑰交換算法 213
13.8 局部敏感的散列算法 217
13.9 *小堆和優先級隊列 217
13.10 線性規劃 219
13.11 結語 220
附錄A AVL樹的性能 221
附錄B NP-hard問題 223
附錄C 練習答案 232
展開全部
算法圖解(第2版) 作者簡介
阿迪蒂亞·Y. 巴爾加瓦(Aditya Y. Bhargava),高級軟件工程師,擁有芝加哥大學計算機科學碩士學位,還在adit.io撰寫技術博客。