本書示例豐富,圖文并茂,以讓人容易理解的方式闡釋了算法,旨在幫助程序員在日常項目中更好地發揮算法的能量。書中的前三章將幫助你打下基礎,帶你學分查找、大O表示法、兩種基本的數據結構以及遞歸等。余下的篇幅將主要介紹應用廣泛的算法,具體內容包括:面對具體問題時的解決技巧,比如,何時采用貪婪算法或動態規劃;散列表的應用;圖算法;Kzui近鄰算法。
像小說一樣有趣的算法入門書。
算法是解決問題的一步步流程,也是計算機科學領域的核心主題。如今程序員常用的算法已經經過了前人的探索、檢驗及證明。如果你想搞明白這些算法,又不想被困在繁瑣的證明中,本書正是你的不二選擇。這本圖示豐富、引人入勝的實用指南將讓你輕松學會如何在自己的程序中高效使用重要的算法。
Aditya Bhargava
軟件工程師,兼具計算機科學和美術方面的教育背景,在adit.io撰寫編程方面的博客。
前言
致謝
關于本書
第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旅行商13
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.3選擇排序25
2.4小結28
第3章 遞歸29
3.1遞歸29
3.2基線條件和遞歸條件32
3.3棧33
3.3.1調用棧34
3.3.2遞歸調用棧36
3.4小結40
第4章 快速排序41
4.1分而治之41
4.2快速排序47
4.3再談大O表示法52
4.3.1比較合并排序和快速排序53
4.3.2平均情況和最糟情況54
4.4小結57
第5章 散列表58
5.1散列函數60
5.2應用案例63
5.2.1將散列表用于查找63
5.2.2防止重復64
5.2.3將散列表用作緩存66
5.2.4小結68
5.3沖突69
5.4性能71
5.4.1填裝因子72
5.4.2良好的散列函數74
5.5小結75
第6章 廣度優先搜索76
6.1圖簡介77
6.2圖是什么79
6.3廣度優先搜索79
6.3.1查找最短路徑82
6.3.2隊列83
6.4實現圖84
6.5實現算法86
6.6小結93
第7章 狄克斯特拉算法94
7.1使用狄克斯特拉算法95
7.2術語98
7.3換鋼琴100
7.4負權邊105
7.5實現108
7.6小結116
第8章 貪婪算法117
8.1教室調度問題117
8.2背包問題119
8.3集合覆蓋問題121
8.4NP 問題127
8.4.1旅行商問題詳解127
8.4.2如何識別NP 問題131
8.5小結133
第9章 動態規劃134
9.1背包問題134
9.1.1簡單算法135
9.1.2動態規劃136
9.2背包問題FAQ143
9.2.1再增加一件商品將如何呢143
9.2.2行的排列順序發生變化時結果將如何145
9.2.3可以逐列而不是逐行填充網格嗎146
9.2.4增加一件更小的商品將如何呢146
9.2.5可以偷商品的一部分嗎146
9.2.6旅游行程化147
9.2.7處理相互依賴的情況148
9.2.8計算最終的解時會涉及兩個以上的子背包嗎148
9.2.9解可能導致背包沒裝滿嗎149
9.3最長公共子串149
9.3.1繪制網格150
9.3.2填充網格151
9.3.3揭曉答案152
9.3.4最長公共子序列153
9.3.5最長公共子序列之解決方案154
9.4小結155
第10章 K 最近鄰算法156
10.1橙子還是柚子156
10.2創建推薦系統158
10.2.1特征抽取159
10.2.2回歸162
10.2.3挑選合適的特征164
10.3機器學習簡介165
10.3.1OCR165
10.3.2創建垃圾郵件過濾器166
10.3.3預測股票市場167
10.4小結167
第11章 接下來如何做168
11.1樹168
11.2反向索引171
11.3傅里葉變換171
11.4并行算法172
11.5MapReduce173
11.5.1分布式算法為何很有用173
11.5.2映射函數173
11.5.3歸并函數174
11.6布隆過濾器和HyperLogLog174
11.6.1布隆過濾器175
11.6.2HyperLogLog176
11.7SHA 算法176
11.7.1比較文件177
11.7.2檢查密碼178
11.8局部敏感的散列算法178
11.9Diffie-Hellman 密鑰交換179
11.10線性規劃180
11.11結語180
練習答案181
“本書完成了一項不可能完成的任務:讓算法變得有趣、易懂!”——Sander Rossel,COAS Software Systems
“你渴望像看喜歡的小說一樣學習算法嗎?如果是,本書正是你夢寐以求的!”——Sankar Ramanathan,IBM Analytics
“如今,使用算法進行優化已滲透到了生活的方方面面。如果你正尋找的算法入門書,本書就是你的。”——Amit Lamba,Tech Overture
“看了這本書我才知道,原來學習算法一點都不乏味!”——Christopher Haupt,Mobirobo
很棒的書,接下來好好學
有趣的算法書,對入門有幫助
這個書特別好,專業性強、內涵豐富、解讀透徹,讀后很有體會!
很基礎,從根本上講解,不過還是有一點python基礎比較好。書很不錯
非常好的一本書
算法主要思想敘述比較詳盡,漫畫式的圖表,比較自然。
封面變形,書不錯
不錯的一本書
學習Python的好書
包裝不錯額
入門書籍。
書不錯,比較淺顯,適合入門,深入的就比較少了
好薄的一本書,希望有用
簡單易懂,印刷質量好,好書!
很好很好!
包裝完好,物流很快!
包裝完好,物流很快!
很好很好很好
很好一本書
非常簡單易懂
不錯的書籍,希望當當多搞一些活動,完善禮品制度。
紙張很好!
不錯的寶貝,專題內容還是比較全面的。
感覺也沒那么有意思
很不錯的書
這是是一本簡單易懂的算法書
很棒的一本書
嗯.....還不錯吧
很實用,很有趣
簡單易懂,不錯哦
好書,在看
非常不錯的寶貝!
剛剛古古怪怪
雖然簡單,但卻很適合用來入門。如果你懂python的話就更適合了。