商品簡介
《漫畫算法:小灰的算法之旅》續作,新增紅黑樹、圖、KPM、希爾排序等高階數據結構與算法,並有更多面試實戰題。
stormzhang帥張、《labuladong的算法小抄》作者、敖太子三丙、@的微笑人氣號主力荐
《漫畫算法:小灰的算法進階》中小灰的算法故事給算法這顆“砲彈”包上了“糖衣”,讓算法的威力潛藏於內,外表不再嚇人,萌萌噠Q彈可愛。
和一群快樂的小倉鼠共同領悟算法思想、理解算法對內存空間和性能的影響,並開動腦筋去尋求解決問題的高效方案。
本書是《漫畫算法:小灰的算法之旅》的續作,通過主人公小灰的心路歷程,用漫畫的形式講述了多個數據結構、算法及復雜多變的算法面試題目。
第1章介紹了幾種典型的排序算法,包括選擇排序、插入排序、希爾排序、歸併排序、基數排序。
第2章介紹了“樹”結構的高級應用,包括二叉查找樹、AVL樹、紅黑樹、B樹和B+樹。
第3章介紹了“圖”結構的概念,以及深度優先遍歷、廣度優先遍歷、單源最短路徑、多源最短路徑算法。
第4章介紹了“查找”相關的算法和數據結構,包括二分查找算法、RK算法、KMP算法,以及“跳表”這種用於高效查找的數據結構。
第5章介紹了多種職場上流行的算法面試題目及詳細的解題思路,例如螺旋遍歷二維數組、尋找數組中第k大元素、求股票交易的更大收益等。
作者簡介
魏夢舒
微信公眾號“程序員小灰”的作者,多年軟件行業從業經驗,先後在京東金融和摩拜科技從事研發工作,對算法有一定的興趣和經驗。
名人/編輯推薦
在算法和數據結構領域,小灰的《漫畫算法》是很好的入門圖書。《漫畫算法2》在前作的基礎上做了諸多的擴展和深入,內容生動有趣,強烈建議想學習算法的朋友們看看這本書。
stormzhang,同名公眾號作者,超人氣博主,前技術&產品人,創業者
俗話說:程序= 數據結構+ 算法,雖然日常工作大多是業務開發,很少直接接觸算法,但是底層API離不開巧妙的算法設計。在這本《漫畫算法》的續作中,幾隻可愛的小倉鼠通俗易懂地介紹了常用的數據結構和算法,可幫助你對編程有更深入的理解。
付東來(labuladong),暢銷書《labuladong的算法小抄》作者
算法本身是很枯燥的,我本人對應試教育式的刷題這種方式也不是很喜歡,但是小灰做到了漫畫和知識點的結合,讓學習和娛樂相結合,同時降低了學習算法的門檻。不管是入門級的新手還是職場老手,都可以閱讀一下。畢竟這是一個算法為王的年代,我相信算法的重要性隨著時間的推移會越來越明顯,我也相信大家都能從本書學到不少算法知識。
周凌雲,微信公眾號(三太子敖丙)作者
程序員小灰一直耕耘在漫畫算法這個領域,積累多年經驗盡心出版的《漫畫算法》系列書籍,讓大家以輕鬆有趣的方式快速掌握算法,同時這本書的實戰性也很強。
張強,微信公眾號(純潔的微笑)作者
序
許多程序員對算法望而生畏,認為算法是一項高深莫測且枯燥的學問。
算法真的有那麼難,真的有那麼無趣嗎?
恰恰相反,算法是編程領域最有意思的一塊內容,也並沒有許多人想像的那樣難以駕馭。
學習算法,我們不需要去死記硬背那些冗長複雜的背景知識、底層原理、指令語法……我們所需要的只有對算法思想的領悟、對空間和性能的理解、開動腦筋去尋求最佳的解決方案。相比編程領域的其他技術,算法更純粹,更接近數學,也更具有趣味性。
我一直希望寫出一些東西,讓更多的IT同行們能夠領略到算法的魅力,於是在2016年9月,我創造了一個初出茅廬的菜鳥程序員形象,這個菜鳥程序員名叫小灰。
程序員小灰的故事活躍在微信公眾號上,用漫畫的形式訴說著他的一次又一次面試經歷,倔強的小灰屢戰屢敗,屢敗屢戰。小灰是我本人剛剛入行時的真實寫照,相信許多程序員小伙伴們也能從中看到自己的影子。
2019年5月,程序員小灰的故事從微信公眾號搬到了紙質的圖書上,這本書叫作《漫畫算法》。這本書一出來,就成為了當年的IT暢銷書。能讓更多行業同仁看到小灰的故事,我感到十分欣慰。
《漫畫算法》的內容定位是“入門”級別,裡面講解的是相對基礎的算法和數據結構知識,至於相對複雜的知識點,比如紅黑樹、圖、KMP算法等就沒有涉及。許多讀者看完這本書,難免有些意猶未盡的感覺。
於是,為了讓大家更全面深入地了解相關知識,我開始了《漫畫算法2》的創作,讓小灰和大黃的有趣故事得以延續,也讓讀者們的算法學習之路有新的起點。
本書特色
這本書通過漫畫的形式,講述了小灰學習算法和數據結構知識的心路歷程。書中許多內容源於本人的微信公眾號,但是比公眾號的內容更加系統,更加全面,也更加嚴謹。
本書是基於前作《漫畫算法》的續作。完全沒有相關基礎的小伙伴可以先看看《漫畫算法》這本書,從而對算法和數據結構有一個基本的認識。
有一定基礎的小伙伴可以從這本《漫畫算法2》當中學到更多的算法,比如希爾排序算法、KMP算法,也可以學到更豐富的數據結構,比如紅黑樹、跳表,還可以了解更多的算法面試題目,比如螺旋遍歷二維數組、股票最大收益問題等。
這不是一本編程入門書。對於在編程方面完全零基礎的讀者,建議先了解一些Java語言的基礎。不過,算法思想是相通的,如果你掌握的是其他編程語言,也不難看懂其中的算法和數據結構知識。
勘誤和支持
除書中所提供的代碼示例以外,大家也可以關注微信公眾號“程序員小灰”,在後台回复“漫畫算法2”,獲得全書完整的、可運行的代碼。為了保證代碼的簡潔,在部分代碼實現中省略了煩瑣的參數判空和驗證邏輯。
由於作者水平有限,書中難免會出現一些錯誤,懇請廣大讀者批評指正。讀者如果在閱讀過程中產生疑問或發現Bug,歡迎隨時到微信公眾號的後台留言。
致謝
感謝微信公眾號“程序員小灰”的讀者。你們的鼓勵和支持,給了我堅持創作的動力。
感謝樸提、單耳和康慧三位插畫師所畫的精彩插畫,是你們讓小灰的形象更豐滿、更可愛。感謝為本書審稿的楊道談先生,感謝在百忙之中閱讀書稿並寫書評的專家們,他們是張奇、付東來、周凌雲、張強。
特別感謝我的父母,是他們把我帶進了數學的大門。在我上小學的時候,是他們的堅持,我才有機會學習奧數,參加數學競賽,並對數學和邏輯產生了興趣。在這本書的寫作過程中,又是他們辛苦努力屏蔽生活瑣事對我的干擾,讓我能夠全身心地投入到本書的寫作當中。
謹以此書獻給我的家人、我的讀者,以及熱愛編程的朋友們!
魏夢舒,微信公眾號“程序號小灰”的作者
目次
第1章排序算法進階/ 1
1.1 新的開始/ 1
1.2 什麼是選擇排序/ 3
1.2.1 如何減少比較次數/ 3
1.2.2 選擇排序的實現/ 8
1.3 什麼是插入排序/ 10
1.3.1 撲克牌中的排序算法/ 10
1.3.2 插入排序的優化/ 14
1.4 什麼是希爾排序/ 16
1.4.1 插入排序的升級/ 16
1.4.2 希爾排序的優化/ 20
1.5 什麼是歸併排序/ 22
1.5.1 擂台上的排序算法/ 22
1.5.2 歸併排序的具體操作/ 25
1.6 什麼是基數排序/ 29
1.6.1 另一種線性排序算法/ 29
1.6.2 解決對齊問題/ 33
1.7 小結/ 35
第2章樹的進階/ 37
2.1 什麼是二叉查找樹/ 37
2.1.1 二叉樹查找樹的特性/ 37
2.1.2 二叉查找樹的插入和刪除/ 40
2.1.3 二叉查找樹的缺陷/ 45
2.2 什麼是平衡二叉樹/ 47
2.2.1 平衡因子和旋轉/ 47
2.2.2 平衡二叉樹的插入和刪除/ 53
2.3 什麼是紅黑樹/ 58
2.3.1 另一種自平衡方式/ 58
2.3.2 紅黑樹的插入/ 62
2.3.3 紅黑樹的刪除/ 68
2.3.4 紅黑樹的實踐和應用場景/ 76
2.4 什麼是B樹和B+樹/ 79
2.4.1 數據庫的索引/ 79
2.4.2 什麼是B樹/ 81
2.4.3 什麼是B+樹/ 88
2.5 小結/ 90
第3章圖/ 91
3.1 什麼是圖/ 91
3.1.1 圖的基本概念/ 91
3.1.2 圖的存儲方式/ 95
3.2 圖的遍歷/ 97
3.2.1 深度優先和廣度優先/ 97
3.2.2 遍歷的具體實現/ 101
3.3 圖的最短路徑/ 107
3.3.1 什麼是迪傑斯特拉算法/ 107
3.3.2 迪傑斯特拉算法的原理/ 111
3.3.3 如何得到完整路徑/ 116
3.4 圖的多源最短路徑/ 125
3.5 小結/ 132
第4章查找算法/ 133
4.1 引言/ 133
4.2 什麼是二分查找/ 135
4.2.1 一個特殊的遊戲/ 135
4.2.2 二分查找的原理/ 138
4.3 什麼是跳表/ 141
4.3.1 鍊錶能做二分查找嗎/ 141
4.3.2 跳表的插入與刪除/ 146
4.4 什麼是字符串匹配算法/ 155
4.4.1 樸素的字符串匹配/ 155
4.4.2 樸素字符串匹配的改進/ 158
4.5 什麼是KMP算法/ 164
4.5.1 無謂的字符比較/ 164
4.5.2 KMP算法的原理/ 166
4.6 小結/ 176
第5章面試中的算法/ 177
5.1 躊躇滿志的小灰/ 177
5.2 如何螺旋遍歷二維數組/ 179
5.2.1 第一次交鋒/ 179
5.2.2 解題思路/ 181
5.3 兩數之和與三數之和/ 187
5.3.1 再接再厲/ 187
5.3.2 解題思路/ 189
5.3.3 問題的擴展/ 194
5.4 數組中的第k個最大元素/ 201
5.4.1 一道數組相關的題目/ 201
5.4.2 解題思路/ 204
5.5 鍊錶的倒數第k個節點/ 210
5.5.1 一道鍊錶相關的題目/ 210
5.5.2 解題思路/ 212
5.6 千變萬化的股票交易問題/ 216
5.6.1 如何獲得最大收益/ 216
5.6.2 解題思路/ 218
5.6.3 題目變形:買賣次數不限/ 220
5.6.4 題目再變形:2次買賣/ 221
5.6.5 最後的勝利/ 233
5.7 結束也是開始/ 235
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。