針對入門的趣味書
- 大話資料結構
這本書最大的特點是,它把理論講得很有趣,不枯燥。而且每個資料結構和演算法,作者都結合生活中的例子進行了講解, 能讓你有非常直觀的感受。雖然這本書有 400 多頁,但是花兩天時間讀完,應該是沒問題的。如果你之前完全不懂資料結構和演算法,可以先從這本書看起。 - 演算法圖解
跟《大話資料結構》走的是同樣的路線,就像這本書副標題寫的那樣,“像小說一樣有趣的演算法入門書”,主打“圖解”,通俗易懂。它只有不到 200 頁,所以內容比較少。作為入門,看看這本書,能讓你對資料結構和演算法有個大概的認識。
這些入門書共同的問題是,缺少細節,不夠系統,也不夠嚴謹。所以,如果你想要系統地學資料結構和演算法,看這兩本書肯定是不夠的。
針對特定程式語言的教科書
- 資料結構和演算法分析
國內外很多大學都拿這本書當作教材。這本書非常系統、全面、嚴謹,而且又不是特別難,適合對資料結構和演算法有些瞭解,並且掌握了至少一門程式語言的同學。- 資料結構與演算法分析:c 語言描述
- 資料結構與演算法分析:c++描述
- 資料結構與演算法分析:java語言描述
- 資料結構與演算法 JavaScript 描述
- 資料結構與演算法: Python 語言描述
講資料結構和演算法,肯定會跟程式碼實現掛鉤。所以,很多人就很關心,某某書籍是用什麼語言實現的,是不是自己熟悉的語言。市面大部分資料結構和演算法書籍都是用 C、C++、Java 語言實現的,還有些是用虛擬碼。而使用 Python、Go、PHP、JavaScript、Objective-C 這些程式語言實現的就更少了。
面試必刷的寶典
- 劍指offer
這本書的名字就可以看出,作者的寫作目的非常明確,就是為了面試。這本書幾乎包含了所有常見的、經典的面試題。如果能搞懂這本書裡的內容,應付一般公司的面試應該不成問題。 - 程式設計珠璣
這本書的豆瓣評分非常高,有 9 分。這本書最大的特色就是講了很多針對海量資料的處理技巧。這個可能是其他演算法書籍很少涉及的。面試的時候,海量資料處理的問題也是經常會問的,特別是校招面試。不管是開拓眼界,還是應付面試,這本書都很值得一看。 - 程式設計之美
這本書有多位作者,其中絕大部分是微軟的工程師,所以書的質量很有保證。不過,這裡面的演算法題目稍微有點難,也不是很系統,這也是我把它歸到面試這一部分的原因。如果你有一定基礎,也喜歡鑽研些演算法問題,或者要面試 Google、Facebook 這樣的公司,可以拿這本書裡的題,先來自測一下。
經典大部頭
- 演算法導論
這本書的章節安排不是循序漸進的,裡面充斥著各種演算法的正確性、複雜度的證明、推導,數學公式比較多,一般人看起來會比較吃力。所以,作為入門書籍,並不是很推薦。 - 演算法
這本書也是一本經典大部頭,不過它比起《演算法導論》來要友好很多,更容易看懂,更適合初學者入門。但是這本書的缺點也很明顯,就是內容不夠全面,比如動態規劃這麼重要的知識點,這本書就沒有講。對於資料結構的東西,它講的也不多,基本就是偏重講演算法。
殿堂級經典
- 計算機程式設計藝術
這套書的深度、廣度、系統性、全面性是其他所有資料結構和演算法書籍都無法相比的。但是,如果你對演算法和資料結構不是特別感興趣,沒有很好的數學、演算法、計算機基礎,想要把這套書讀完、讀懂是比較難的。你可以把它當作你演算法學習的終極挑戰。
閒暇閱讀
- 演算法帝國
- 數學之美
- 演算法之美
這些書共同的特點是,都列舉了大量的例子,非常通俗易懂。誇張點說,像《演算法帝國》,文科生都能讀懂。當你看這些書的時候,你常常會深深感受到演算法的力量,被演算法的優美之處折服。即便不是從事 IT 工作的,看完這幾本書也可以開拓眼界。