数据结构与算法书籍推荐
2019獨角獸企業重金招聘Python工程師標準>>>
原文地址:http://www.oschina.net/question/587367_156025
?
?
學計算機的人是幸福的,因為在這個領域中有如此多的通俗易懂(相對來說)的經典好書,你需要做的只是堅持把它們一本一本讀下去而已。在這里列出一些我看過或者準備看的算法書籍,以供參考。
第一名?
原書名:The Art of Computer Programming?
中文名:計算機程序設計藝術?
作者:Donald E.Knuth?
難度:★★★★★?
個人評價:★★★★★?
推薦程度:★★★?
本書是算法分析的經典名作(用經典不太恰當,應該是圣經或史詩),被科學美國人列為20世紀12大科學名著之一(和Dirac的量子力學,Einstein 的廣義相對論,von Neumann 的博弈論的著作等齊名)。其亮點在于其超乎尋常的數學技巧,要求讀者擁有極高的數學修養,只要你堅持忍耐,一旦讀懂了,你的算法和程序設計水平也會達到更高的檔次,你會對程序設計有一種截然不同的體會和領悟,就是“道”(Tao)。?
書的排版很漂亮(得益于作者的Tex系統),看起來很舒服。作者的文筆很好,寫得生動活潑,讀起來蕩氣回腸(英文版)。習題多且精華,觸及算法和程序本質,書后有幾乎所有習題的答案(占了整全書篇幅的1/4),書中的分析方法體現了作者嚴謹的風格。不過本書的程序不是用我們熟悉的高級語言描述的,而是作者設計的MIX語言。?
整套書原計劃出七卷,現在出了三卷:基本算法,半數值算法,排序和搜索,第四卷組合算法跳票了20年,Knuth稱在2008年推出。本書有中文版,不過建議讀者選用英文版,因為都學到這個程度了,英語應該不會有大困難了。?
引用一句話“在我們的有生之年,可能會看到C++的消亡,但Knuth和他的程序設計藝術,將永遠留在我們的心里。”?
第二名?
原書名:Introduction to Algorithms?
中文名:算法導論?
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein?
難度:★★★?
個人評價:★★★★★?
推薦程度:★★★★★?
本書俗稱CLRS(作者名字的簡寫),算法的經典教材,堪稱算法分析著作中的“獨孤九劍”。作者之一Ronald L.Rivest 由于其在公開秘鑰密碼算法RSA上的貢獻獲得了ACM圖靈獎。?
全書內容全面,結構清晰,6個部分1000多頁把數據結構算法的主要內容都包含了。作者用圖表,偽碼解釋每一個算法,通俗易懂而不失嚴謹性,英文比較簡單,語言流暢,因此,與TAOCP相比,這本書更適合初學者,不要求讀者擁有很強的數學背景和豐富的編程經驗。?
書中習題安排合理,難度適中,在網上有全部習題的答案,網上還有作者在MIT講述本書的課程的錄像,可謂資源豐富,值得注意的是書中每一章后面都有一個Chapter notes,了解一下歷史,看一下作者推薦的材料是不錯的(如果你能找到的話)。?
第三名?
原書名:Data Structures and Algorithms Analysis in C/C++/JAVA?
中文名:數據結構與算法分析——C語言描述/C++描述/Java語言描述?
作者:Mark Allen Weiss?
難度:★★★?
個人評價:★★★★★?
推薦程度:★★★★★?
-
《數據結構與算法分析——C語言描述》(Data Structures and Algorithms Analysis in C)第二版,Mark Allen Weiss著,天津師范大學馮舜璽譯,機械工業出版社。Weiss教授的數據結構經典教材三部曲之一,其中的C語言描述版本,也就是本書,被稱為20世紀最重要的30本計算機教材之一。Mark Allen Weiss(馬克?愛倫?韋斯),1987年在普林斯頓大學獲得計算機科學博士學位,師從著名算法大師Robert Sedgewick,現任美國佛羅里達國際大學計算與信息科學學院教授。他曾經擔任全美AP(Advanced Placement)考試計算機學科委員會的主席(2000-2004)。他的主要研究方向是數據結構,算法和教育學。中文版翻譯質量很好。數學公式太多。網上可以下載書中代碼,但是沒有輸出結果,也沒有習題答案。?
-
《數據結構與算法分析——C++描述》(Data Structures and Algorithms Analysis in C++)第三版,Mark Allen Weiss著,張懷勇等譯,機械工業出版社。Weiss教授的數據結構經典教材三部曲之一。?
-
《數據結構與算法分析——Java語言描述》(Data Structures and Algorithms Analysis in Java)第二版,Mark Allen Weiss著,天津師范大學馮舜璽譯,機械工業出版社。Weiss教授的數據結構經典教材三部曲之一。?
第四名?
原書名:Introduction to The Design & Analysis of Algorithms?
中文名:算法設計與分析基礎?
作者:Anany Levitin?
難度:★★★?
個人評價:★★★★?
推薦程度:★★★★?
算法書的另一種寫法,以方法為主線,如Brute-Force, Divide-and-Conquer, Greedy techniques,書里面有很多有趣的習題?
第五名?
原書名:Data Structures, Algorithms, and Applications in C++?
中文名:數據結構算法與應用-C++語言描述?
作者:Sartej Sahni 譯者:汪詩林等?
難度:★★★?
個人評價:★★★?
推薦程度:★★★?
不少人推薦這本書,但我個人覺得這書不怎么樣,中文版翻譯水平差強人意,數據結構算法部分把該講的都講了,但沒什么突出的地方,反而C++倒說了不少,代碼的水平也不怎么樣。?
從ACCU的評價上看,書中的實現與BOOST和STL相比相去甚遠。不過這書有很多實際問題,可以看一看。?
第六名?
原書名: Programming Pearls?
中文名:?編程珠璣?
作者: Jon Bentley?
難度:★★★?
個人評價:★★★★?
推薦程度:★★★★?
編程珠璣:學習算法不僅需要像Alogrithms,算法導論這樣的重量級的內功心法,像《編程之美》、《編程珠璣》這樣的輕量級的輕功身法也必不可少。?
前些年網上不是很流行像“給你10億個數,找到最大的n個”或者“給你10億個數,找出現次數最多的那個數”之類的百度面試題嗎?看了此書你就知道怎么解決了。?
相比于《編程之美》來說,本書中的示例技巧性略低一些,但是也更有實際應用價值一些。?
第七名?
原書名:Algorithm Design?
中文名:?算法設計?
作者: Jon Kleinberg / éva Tardos?
難度:★★★?
個人評價:★★★★?
推薦程度:★★★★?
Algorithm Design 算法設計 很經典的一本書,很久之前看的。個人覺得“算法設計”比“算法導論”好。?
我是先看到“算法導論”后看的“算法設計”,看“算法設計”的時候還是很享受這本書的,同時也把知識鞏固了一遍?
第八名?
原書名:算法藝術與信息學競賽?
中文名:?算法藝術與信息學競賽?
作者: 劉汝佳?
難度:★★★?
個人評價:★★★★?
推薦程度:★★★★?
算法藝術與信息學競賽:如果算法導論是九陽神功,那這本無疑就是九陰真經。?
本書是專為參加一些諸如ACM之類程序設計比賽的同學而寫的,江湖人稱“黑書”。里面講的都是一些在編程比賽中常用的算法、數據結構,以及一些數論和計算幾何等。我雖然并不搞競賽,但也從此書中受益頗多。?
第九名?
原書名:Algorithms in C,Algorithms in C++,Algorithms in Java?
中文名:算法I-IV(C實現),算法V(C實現)(C++實現)(Java實現)?
作者:Robert Sedgewick?
難度:★★★?
個人評價:★★★★★?
推薦程度:★★★★?
Robert Sedgwick是Knuth的學生,現在是princeton的教授。這是三個系列,與上面用偽碼描述算法不同,本書用現今流行的語言C,C++,Java描述.那么選拿哪一種語言好呢?從算法的角度看,任何高級語言都是沒區別的,雖然實現算法的時候,到了語言相關的層面會有一些細微區別,但影響不大。?
個人推薦C++的,因為價錢最便宜:)。本書的一個特點就是例子取得很好,代碼很清晰。有中文版?
第十名?
原書名:Algorithms Design Techniques and Analysis?
中文名:算法設計技巧與分析?
作者:M.H.Alsuwaiyel?
難度:★★★★?
個人評價:★★★★?
推薦程度:★★★★?
這本書對一般算法書較少涉及的概率算法和近似算法作了重要的補充?
第十一名?
原書名:?
中文名:算法與數據結構?
作者:傅清祥 王曉東?
難度:★★★?
個人評價:★★★★?
推薦程度:★★★★?
這本是國人寫的最好的數據結構算法書之一,講得很細致。最后的三章:復雜性,并行算法,高級專題有一些有趣的東西,是這些高級內容的很好的導論。?
第十二名?
原書名:?
中文名:數據結構(C語言版)?
作者:嚴蔚敏 吳偉民?
難度:★★★?
個人評價:★★★?
推薦程度:★★★?
無需解釋。
轉載于:https://my.oschina.net/u/2820842/blog/1803211
總結
以上是生活随笔為你收集整理的数据结构与算法书籍推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发机制底层实现原理-volat
- 下一篇: 软件成本度量方法及CMMI V2.0,你