1. 程式人生 > >資料結構與演算法書單

資料結構與演算法書單

整理自極客時間-資料結構與演算法之美。原文內容更完整具體,且有音訊。購買地址:

針對入門的趣味書

入門的同學,建議不要過度追求上去就看經典書。像《演算法導論》《演算法》這些書,雖然比較經典、比較權威,但是非常厚。初學就去啃這些書肯定會很費勁。入門的同學,建議找一些比較容易看的書來看,比如《大話資料結構》《演算法圖解》不要太在意書寫得深淺,重要的是能不能堅持看完

大話資料結構 這本書最大的特點是,它把理論講得很有趣,不枯燥。雖然這本書有 400 多頁,但是花兩天時間讀完,應該是沒問題的。如果你之前完全不懂資料結構和演算法,可以先從這本書看起。

演算法圖解》 跟《大話資料結構》走的是同樣的路線,主打“圖解”,通俗易懂。它只有不到 200 頁,所以內容比較少。作為入門,看看這本書,能讓你對資料結構和演算法有個大概的認識。

這些入門書共同的問題是,缺少細節,不夠系統,也不夠嚴謹。所以,如果你想要系統地學資料結構和演算法,看這兩本書肯定是不夠的。

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

推薦《資料結構和演算法分析》。他用了三種語言,寫了三個版本,分別是:《資料結構與演算法分析 :C 語言描述》《資料結構與演算法分析:C++ 描述》《資料結構與演算法分析:Java 語言描述》

如果你熟悉的是 Python 或者 JavaScript,可以參考《資料結構與演算法 JavaScript 描述》《資料結構與演算法:Python 語言描述》 

面試必刷的寶典

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

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

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

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

經典大部頭

很多人一提到演算法書就會搬出《演算法導論》和《演算法》。這兩本確實非常經典,但是都太厚了,看起來比較費勁,我估計很少有人能堅持全部看下來。如果你想更加深入地學一學資料結構和演算法,我還是強烈建議你看看。

我個人覺得,演算法導論這本書的章節安排不是循序漸進的,裡面充斥著各種演算法的正確性、複雜度的證明、推導,數學公式比較多,一般人看起來會比較吃力。所以,作為入門書籍,並不是很推薦。

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

殿堂級經典

說到殿堂級經典書,如果計算機程式設計藝術稱第二,我想沒人敢稱第一。這本書包括很多卷。說實話,我也只看過比較簡單的幾卷,比如《基本演算法》《排序和查詢》

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

閒暇閱讀

演算法無處不在。我這裡再推薦幾本適合閒暇時間閱讀的書:演算法帝國》《數學之美》《演算法之美

這些書共同的特點是,都列舉了大量的例子,非常通俗易懂。誇張點說,像《演算法帝國》,文科生都能讀懂。當你看這些書的時候,你常常會深深感受到演算法的力量,被演算法的優美之處折服。即便不是從事 IT 工作的,看完這幾本書也可以開拓眼界。