如果計(jì)算機(jī)系只開三門課,那么這三門課就一定是:離散數(shù)學(xué),數(shù)據(jù)結(jié)構(gòu)與算法,編譯原理。如果只開一門課,那剩下的就一定是:數(shù)據(jù)結(jié)構(gòu)與算法。Niklaus Wirth說(shuō):算法+數(shù)據(jù)結(jié)構(gòu)=程序,不說(shuō)廢話了,下面列出一份數(shù)據(jù)結(jié)構(gòu)算法書目,先從最著名的說(shuō)起
A
原書名:The Art of Computer Programming
中文名:計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)
作者:Donald E.Knuth
難度:*****
個(gè)人評(píng)價(jià):*******
推薦程度:****
本書是算法分析的經(jīng)典名作(用經(jīng)典不太恰當(dāng),應(yīng)該是圣經(jīng)或史詩(shī)),被科學(xué)美國(guó)人列為20世紀(jì)12大科學(xué)名著之一(和Dirac的量子力學(xué),Einstein 的廣義相對(duì)論,von Neumann的博弈論的著作等齊名)。其亮點(diǎn)在于其超乎尋常的數(shù)學(xué)技巧,要求讀者擁有極高的數(shù)學(xué)修養(yǎng),只要你堅(jiān)持忍耐,一旦讀懂了,你的算法和程序設(shè)計(jì)水平也會(huì)達(dá)到更高的檔次,你會(huì)對(duì)程序設(shè)計(jì)有一種截然不同的體會(huì)和領(lǐng)悟,就是“道”(Tao)。書的排版很漂亮(得益于作者的Tex系統(tǒng)),看起來(lái)很舒服。作者的文筆很好,寫得生動(dòng)活潑,讀起來(lái)蕩氣回腸(英文版)。習(xí)題多且精華,觸及算法和程序本質(zhì),書后有幾乎所有習(xí)題的答案(占了整全書篇幅的1/4),書中的分析方法體現(xiàn)了作者嚴(yán)謹(jǐn)?shù)娘L(fēng)格。不過(guò)本書的程序不是用我們熟悉的高級(jí)語(yǔ)言描述的,而是作者設(shè)計(jì)的MIX語(yǔ)言。整套書原計(jì)劃出七卷,現(xiàn)在出了三卷:基本算法,半數(shù)值算法,排序和搜索,第四卷組合算法跳票了20年,Knuth稱在2008年推出。本書有中文版,不過(guò)建議讀者選用英文版,因?yàn)槎紝W(xué)到這個(gè)程度了,英語(yǔ)應(yīng)該不會(huì)有大困難了。引用一句話“在我們的有生之年,可能會(huì)看到C++的消亡,但Knuth和他的程序設(shè)計(jì)藝術(shù),將永遠(yuǎn)留在我們的心里。”
B
原書名:Introduction to Algorithms
中文名:算法導(dǎo)論
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein
難度:***
個(gè)人評(píng)價(jià):*****
推薦程度:*****
本書俗稱CLRS(作者名字的簡(jiǎn)寫),算法的經(jīng)典教材,堪稱算法分析著作中的“獨(dú)孤九劍”。作者之一Ronald L.Rivest由于其在公開秘鑰密碼算法RSA上的貢獻(xiàn)獲得了ACM圖靈獎(jiǎng)。全書內(nèi)容全面,結(jié)構(gòu)清晰,6個(gè)部分1000多頁(yè)把數(shù)據(jù)結(jié)構(gòu)算法的主要內(nèi)容都包含了。作者用圖表,偽碼解釋每一個(gè)算法,通俗易懂而不失嚴(yán)謹(jǐn)性,英文比較簡(jiǎn)單,語(yǔ)言流暢,因此,與TAOCP相比,這本書更適合初學(xué)者,不要求讀者擁有很強(qiáng)的數(shù)學(xué)背景和豐富的編程經(jīng)驗(yàn)。書中習(xí)題安排合理,難度適中,在網(wǎng)上有全部習(xí)題的答案,網(wǎng)上還有作者在MIT講述本書的課程的錄像,可謂資源豐富,值得注意的是書中每一章后面都有一個(gè)Chapter notes,了解一下歷史,看一下作者推薦的材料是不錯(cuò)的(如果你能找到的話)。
C
原書名:The Design and Analysis of Computer Algorithms
中文名:算法設(shè)計(jì)與分析
作者:Aho,Hopcroft,Ullman
難度:****
個(gè)人評(píng)價(jià):*****
推薦程度:*****
該書寫于1976年,作者Hopcroft是1986年ACM圖靈獎(jiǎng)得主,這三個(gè)人寫過(guò)很多書,大多數(shù)都是經(jīng)典,于一般的算法書不同,該書側(cè)重于證明算法的正確性和復(fù)雜性,而不是怎樣實(shí)現(xiàn)和應(yīng)用算法,敘述上更加形式化,屬于定義-引理-定理的數(shù)學(xué)書風(fēng)格,認(rèn)真研究一下里面的證明能大大提高理論水平。如果你看完了CLRS或其他數(shù)據(jù)結(jié)構(gòu)入門書,要深入學(xué)習(xí)算法,但TAOCP看起來(lái)又太吃力的話,這本比較適合。最后一點(diǎn)是書中的習(xí)題很精華,即使你不看這本書,做一下里面的習(xí)題也是非常有意思的
D
原書名:Data Structures and Algorithms
中文名:數(shù)據(jù)結(jié)構(gòu)與算法
作者:Aho,Hopcroft,Ullman
難度:***
個(gè)人評(píng)價(jià):****
推薦程度:****
上面那本書的姐妹篇,內(nèi)容就簡(jiǎn)單很多了,該書寫法有個(gè)特點(diǎn)就是每一個(gè)主題都從一個(gè)基本的觀念出發(fā),然后再逐漸深入討論,這樣做能使解釋更清晰,富有啟發(fā)性。不過(guò)這本書寫于20年前,所以有一些高級(jí)內(nèi)容如紅黑樹是沒(méi)有的,拿這本書做教材的讀者最好同時(shí)拿一本較新的來(lái)做參考。
E
原書名:Algorithms in C,Algorithms in C++,Algorithms in Java
中文名:算法I-IV(C實(shí)現(xiàn)),算法V(C實(shí)現(xiàn))(C++實(shí)現(xiàn))(Java實(shí)現(xiàn))
作者:Robert Sedgewick
難度:***
個(gè)人評(píng)價(jià):****
推薦程度:****
RobertSedgwick是Knuth的學(xué)生,現(xiàn)在是princeton的教授。這是三個(gè)系列,與上面用偽碼描述算法不同,本書用現(xiàn)今流行的語(yǔ)言C,C++,Java描述.那么選拿哪一種語(yǔ)言好呢?從算法的角度看,任何高級(jí)語(yǔ)言都是沒(méi)區(qū)別的,雖然實(shí)現(xiàn)算法的時(shí)候,到了語(yǔ)言相關(guān)的層面會(huì)有一些細(xì)微區(qū)別,但影響不大。個(gè)人推薦C++的,因?yàn)閮r(jià)錢最便宜:)。本書的一個(gè)特點(diǎn)就是例子取得很好,代碼很清晰。有中文版
F
原書名:Algorithms Design Techniques and Analysis
中文名:算法設(shè)計(jì)技巧與分析
作者:M.H.Alsuwaiyel
難度:****
個(gè)人評(píng)價(jià):****
推薦程度:****
這本書對(duì)一般算法書較少涉及的概率算法和近似算法作了重要的補(bǔ)充
G
原書名:Introduction to The Design & Analysis of Algorithms
中文名:算法設(shè)計(jì)與分析基礎(chǔ)
作者:Anany Levitin
難度:***
個(gè)人評(píng)價(jià):****
推薦程度:****
算法書的另一種寫法,以方法為主線,如Brute-Force, Divide-and-Conquer, Greedy techniques,書里面有很多有趣的習(xí)題
H
原書名:Data Structures, Algorithms, and Applications in C++
中文名:數(shù)據(jù)結(jié)構(gòu)算法與應(yīng)用-C++語(yǔ)言描述
作者:Sartej Sahni 譯者:汪詩(shī)林等
難度:***
個(gè)人評(píng)價(jià):***
推薦程度:***
不少人推薦這本書,但我個(gè)人覺(jué)得這書不怎么樣,中文版翻譯水平差強(qiáng)人意,數(shù)據(jù)結(jié)構(gòu)算法部分把該講的都講了,但沒(méi)什么突出的地方,反而C++倒說(shuō)了不少,代碼的水平也不怎么樣。從ACCU的評(píng)價(jià)上看,書中的實(shí)現(xiàn)與BOOST和STL相比相去甚遠(yuǎn)。不過(guò)這書有很多實(shí)際問(wèn)題,可以看一看。
I
原書名:
中文名:算法與數(shù)據(jù)結(jié)構(gòu)
作者:傅清祥 王曉東
難度:***
個(gè)人評(píng)價(jià):****
推薦程度:****
這本是國(guó)人寫的最好的數(shù)據(jù)結(jié)構(gòu)算法書之一,講得很細(xì)致。最后的三章:復(fù)雜性,并行算法,高級(jí)專題有一些有趣的東西,是這些高級(jí)內(nèi)容的很好的導(dǎo)論。
J
原書名:
中文名:數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)
作者:嚴(yán)蔚敏 吳偉民
難度:***
個(gè)人評(píng)價(jià):***
推薦程度:***
另一本寫的較好的中文數(shù)據(jù)結(jié)構(gòu)算法書,這本書特別適合考試用(沒(méi)有任何輕視的意思)
上面的書適合哪些人(我只是學(xué)生,這只是個(gè)人意見(jiàn))
做學(xué)術(shù)研究:A+C+F
學(xué)過(guò)初級(jí)課程要深入:C+F+(I后三章)
在職或講求實(shí)用:E
入門:B或D
程序設(shè)計(jì)競(jìng)賽:B+G+(I前八章)
考研或程序員考試:J
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。