程序員書庫(ID:OpenSourceTop) 編譯
鏈接:http://www.java67.com/2015/09/top-10-algorithm-books-every-programmer-read-learn.html


算法是獨立於編程語言的,無論你是什麼程序員都可以把它們應用到自己的編程語言中去,我遇到過很多在編程方面很有經驗的程序員,比如一個Java程序員非常底層的API細節和語言的複雜性,但對算法卻知之甚少。


有一次,我面試一個各項都很優秀的開發者,他擅長Java,多線程,但是他的數據結構和算法真的是差到爆,我問他,爲什麼他來面試之前不花點時間複習他的算法以及相關的答題的技巧?他的說辭是“這些算法只是用於面試,在實際工作中根本用不着”。確實,在我多年的Java開發生涯中,我確實沒有直接使用過算法,從這一方面來說,他是對的,但是他並沒有認識到算法和數據結構在提高編程技能方面的作用。


相信大家也都知道對於像BAT這樣的企業,如果你能掌握算法和數據結構,那是非常加分的,除了UNIX和C語言,核心的編程依然是算法和數據結構保持不變。所以,算法對一個程序員來說是十分重要的,本文分享9本學習算法的好書:


1、《Introduction to Algorithms》


無論你是什麼技能方向,這些算法書都值得你看



這是一本最受歡迎的算法書,裏面包含了大量的理論,這本書當前版本是第三版,我強烈建議每個程序員在他們的書架上都應該有這本書,但只供簡短的閱讀和參考,一口氣讀完這本書是不可能的。我推薦這本書的另一個原因是它是關於算法的第一本書,全面論述了算法的內容


2、《算法》


無論你是什麼技能方向,這些算法書都值得你看



這是我一直以來學習算法的首選書籍,只是現在翻它的頻率降低了,通過這本書你會學到很多關於算法的背景知識,現在這本書還有針對不同編程語言的特定版本,如Java和C++,裏面涵蓋每位程序員應知應會的50種算法,我認爲每位Java程序員都適合這本書。


3、《算法設計指南》


無論你是什麼技能方向,這些算法書都值得你看



這本書設計了大量的算法及代碼,我特別喜歡這本書的一大原因就是它能讓你在實踐中使用算法,也確實能夠實實在在的幫助你瞭解特定的算法,並用來解決特定的問題,書中的代碼示例是用C編寫的,但不是很深奧很好理解,這本書我十多年前就買了,到現在依然會是不是看一下


4、《Algorithms For Interviews》


無論你是什麼技能方向,這些算法書都值得你看



這是另外一本在面試前必讀的算法書籍,封面本身就很有趣了,如果你仔細看,封面上的圖片是用名人的縮略圖繪製而成的,這本書解釋瞭如何使用算法,我喜歡這本書是因爲它的方法,它告訴你有些時候通過不同的方式去學一些東西,會讓你更好的理解他


5、《算法技術手冊》


無論你是什麼技能方向,這些算法書都值得你看



這是一本很讚的學習編程算法的書,特別是對於Java程序員。它描述的算法側重於實現它們,而不像其他算法書記一樣使用的大量數學知識。所有的算法都以模式的形式呈現,有解釋圖例和僞代碼,以及示例代碼(使用C、c++、Java和Ruby),當然也有相關的算法基礎理論知識。簡而言之,這是程序員學習算法的最佳書籍之一。


6、《算法設計》


無論你是什麼技能方向,這些算法書都值得你看



這實際上是繼Thomas Cormon的算法導論之後的第二本最好的算法書。它並不是真正的算法介紹,可能更適合有經驗的程序員,書中更側重於算法設計。個人建議你最好先讀好Robert Sedgewick 的《算法》,然後再來讀這本書。


7、《算法引論》


無論你是什麼技能方向,這些算法書都值得你看



這是一本非常適合自學的書,因爲裏面有很多問題和例子,它旨在提高讀者解決問題的能力和理解算法設計背後的原則,這一點將會大大提高你的編程技巧


8、《算法設計與分析基礎》


無論你是什麼技能方向,這些算法書都值得你看



如果你有一定的基礎,建議你把這本書當做你的算法進階,本書是第3版,相對前版調整了多個章節的內容和順序,同時增加了一些算法,並擴展了算法的應用,使得具體算法和通用算法設計技術的對應更加清晰有序。


9、《Python算法教程》



無論你是什麼技能方向,這些算法書都值得你看



這本書是爲Python程序員設計的,作者Magnus Lie Hetland還撰寫過另一本Python入門書《 Python基礎教程》,本書主要介紹圖形算法,前面已經說過算法是獨立於編程語言的,學習Python的算法並不代表你無法用Java實現它們,但如果你已經有Python基礎,那麼本書就能很好的幫助你學習算法,


寫在最後

以上就是今天要和大家分享的算法書,我認爲算法是一個非常複雜的主題,建議同一本書可以通讀兩遍,不過死讀書是沒有用的,你還要嘗試用你喜歡的編程語言去實現它們,漸漸地你會發現你的思維和代碼質量有了明顯的改進。最後,我認爲世界上只有兩種程序員:一種懂算法,一種不懂

相关文章