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