當前位置:
首頁 > 科技 > 程序員必備的數據結構與演算法書單

程序員必備的數據結構與演算法書單

作者 | 王爭

出處 | 極客時間《數據結構與演算法之美》專欄

「演算法,先於計算機存在於世,比編程語言本身更為重要。語言只是工具,演算法才是靈魂。」

這是雲風在《遊戲之旅:我的編程感悟》這本書里一個非常經典的表述。

市面上演算法書比比皆是,究竟哪些書值得看,哪些書適合什麼基礎的人來看呢?

鑒於此,我針對不同層次、不同語言的程序員,我分別選擇了不同的書。你可以看看自己究竟處於哪個層次,來對症下藥。希望每位想在數據結構與演算法上得到提升的同學,都能找到適合自己的學習資料,都能在現有水平上有所提高。

針對入門的趣味書

如果你是入門的同學,我推薦你閱讀《大話數據結構》和《演算法圖解》這兩本書。

《大話數據結構》這本書最大的特點是,它把理論講得很有趣,不枯燥。而且每個數據結構和演算法,作者都結合了生活中的例子,能讓你有非常直觀的感受。雖然這本書有 400 頁,但是花兩天時間讀完應該是沒問題的。所以,如果你之前完全不懂數據結構和演算法,可以先從這本書看起。

《演算法圖解》這本書跟《大話數據結構》走的是同樣的路線,就像這本書副標題寫的那樣,「像小說一樣有趣的演算法入門書」,主打「圖解」,通俗易懂。它只有不到 200 頁,所以內容也比較少。作為入門,看看這本書,能讓你對數據結構和演算法有個大概的認識。

針對入門的同學,我推薦書的依據是看厚度。《演算法導論》、《演算法》這些書雖然比較經典、比較權威,但是非常厚。初學就去啃這些書肯定是比較費勁的。而一旦學不下來,挫敗感就會很強。所以,如果是入門,我建議找一些比較薄的書來看。不要太在意書寫得深淺,重要的是能不能堅持看完。

但是如果想要系統地學數據結構和演算法,看這兩本書肯定是不夠的。這些入門書共同的問題是,缺少細節,不夠系統,也不夠嚴謹。所以,如果你已經有了一定基礎,這兩本書就滿足不了你的需求了。

針對特定編程語言的教科書

講數據結構和演算法,肯定會跟代碼實現掛鉤。所以,很多人就很關心,某某書籍是用什麼語言實現的,是不是自己熟悉的語言。市面大部分數據結構和演算法書籍都是用 C、C++、Java 語言實現的,還有些是用偽代碼。

所以,我首先推薦《數據結構和演算法分析》。國內外很多大學都拿它當作教材。因為這本書非常系統、全面、嚴謹,而且又不是特別難,適合對數據結構和演算法有些基本了解,並且掌握了至少一門編程語言的同學。而且,這個作者也很用心,他用了三種語言,寫了三個版本,分別是:《數據結構與演算法分析 : C 語言描述》、《數據結構與演算法分析 : C++ 描述》、《數據結構與演算法分析 : Java 語言描述》。

面試必刷的寶典

演算法對於面試很重要,很多人也很關心。我這裡推薦幾本有益於面試的書籍,分別是《編程之美》、《劍指 offer》、《編程珠璣》。

《劍指 offer》這本書的名字就可以看出,作者的寫作目的非常明確,就是為了面試。這本書幾乎包含所有常見的、經典的面試題,所以只要能搞懂裡面的內容,應付一般公司的面試應該不成問題。

《編程珠璣》這本書的豆瓣評分非常高,有 9 分之高。這本書最大的特色是講了很多針對海量數據的處理技巧。這個可能是其他演算法書籍很少涉及的。面試的時候,海量數據處理的問題也是經常被問到的,特別是校招面試,所以不管是開拓眼界,還是應付面試,這本書都值得一看。

《編程之美》這本書的作者,絕大部分都是微軟的工程師,所以質量很有保證。不過,這裡面的演算法題目稍微有點難,也不是很系統,這也是為什麼我把它歸到面試這一部分的原因。如果你有一定基礎,也喜歡鑽研些演算法問題,或者是要面試 Google、Facebook 這樣的公司,可以拿用這本書里的題,先自測一下。

經典大部頭

如果前面推薦的書籍你都沒聽過,那下面這兩本你肯定不會陌生,那就是《演算法導論》和《演算法》。很多人一提到演算法書籍就會搬出這兩本,不過這兩本雖然經典、出名,但也都特別厚,看起來很費勁。我估計全書讀下來的人沒多少。但是如果你想對數據結構和演算法已經有更深入的了解,我還是非常建議你看看。

我個人覺得,《演算法導論》這本書的章節安排的先後順序不是很循序漸進,裡面充斥著各種演算法的正確性、複雜度的證明、推導,數學公式比較多,一般人看起來都會比較吃力。

《演算法》這本書也是一本經典大部頭,不過它比起《演算法導論》來要友好很多,更容易看懂,更適合初學者入門。但是這本書的缺點也很明顯,就是內容不夠全面,比如動態規劃這麼重要的知識點這本書就沒有講。對於數據結構的東西,它講的也不多,基本就是偏重講演算法。

殿堂級經典

如果說《計算機程序設計藝術》敢稱數據結構與演算法界的經典書第二,應該無人敢稱第一。這本書包括很多卷。說實話,我也只看過比較簡單的幾卷,比如《基本演算法》、《排序和查找》。

這套書的深度、廣度、系統性、全面性是其他所有數據結構和演算法書籍都所無法相比的。但是,如果你不是對演算法和數據結構特別感興趣,沒有很好的數學、演算法、計算機基礎,想要把這些書都讀完讀懂是比較難的。你可以把它當作你演算法學習的終極挑戰。

福利時間到!

人民郵電出版社非同步社區為了 InfoQ & 極客時間用戶能更好地學習演算法知識,特意贊助了 10 本《人工智慧(第 2 版)》。本書是京東新書榜上排名第一的好書,美國經典入門教材,被譽為人工智慧領域百科全書。人工智慧領域近十年來最前沿教程,更加適合本科生使用。

《人工智慧(第2版)

[美] 史蒂芬·盧奇(Stephen Lucci) 著

本書基於人工智慧的理論基礎, 向讀者展示全面、新穎、豐富多彩且易於理解的人工智慧知識體系。本書給出諸多的示例、應用程序、全彩圖片和人物軼事,以激發讀者的閱讀和學習興趣;還引入了機器人和機器學習的相關高級課程,包括神經網路、遺傳演算法、自然語言處理、規劃和複雜的棋盤博弈等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

訂閱了好多專欄,如何學習才能收益最大化?
來跟Google Cloud大咖們來場親密接觸:今夜 以AI之名

TAG:InfoQ |