算法是獨(dú)立于編程語(yǔ)言的,無(wú)論你是什么程序員都可以把它們應(yīng)用到自己的編程語(yǔ)言中去,我遇到過(guò)很多在編程方面很有經(jīng)驗(yàn)的程序員,比如一個(gè)Java程序員非常底層的API細(xì)節(jié)和語(yǔ)言的復(fù)雜性,但對(duì)算法卻知之甚少。
有一次,我面試一個(gè)各項(xiàng)都很優(yōu)秀的開(kāi)發(fā)者,他擅長(zhǎng)Java,多線(xiàn)程,但是他的數(shù)據(jù)結(jié)構(gòu)和算法真的是差到爆,我問(wèn)他,為什么他來(lái)面試之前不花點(diǎn)時(shí)間復(fù)習(xí)他的算法以及相關(guān)的答題的技巧?他的說(shuō)辭是“這些算法只是用于面試,在實(shí)際工作中根本用不著”。確實(shí),在我多年的Java開(kāi)發(fā)生涯中,我確實(shí)沒(méi)有直接使用過(guò)算法,從這一方面來(lái)說(shuō),他是對(duì)的,但是他并沒(méi)有認(rèn)識(shí)到算法和數(shù)據(jù)結(jié)構(gòu)在提高編程技能方面的作用。
相信大家也都知道對(duì)于像BAT這樣的企業(yè),如果你能掌握算法和數(shù)據(jù)結(jié)構(gòu),那是非常加分的,除了UNIX和C語(yǔ)言,核心的編程依然是算法和數(shù)據(jù)結(jié)構(gòu)保持不變。所以,算法對(duì)一個(gè)程序員來(lái)說(shuō)是十分重要的,本文分享9本學(xué)習(xí)算法的好書(shū):
1、《Introduction to Algorithms》
這是一本最受歡迎的算法書(shū),里面包含了大量的理論,這本書(shū)當(dāng)前版本是第三版,我強(qiáng)烈建議每個(gè)程序員在他們的書(shū)架上都應(yīng)該有這本書(shū),但只供簡(jiǎn)短的閱讀和參考,一口氣讀完這本書(shū)是不可能的。我推薦這本書(shū)的另一個(gè)原因是它是關(guān)于算法的第一本書(shū),全面論述了算法的內(nèi)容
2、《算法》
這是我一直以來(lái)學(xué)習(xí)算法的首選書(shū)籍,只是現(xiàn)在翻它的頻率降低了,通過(guò)這本書(shū)你會(huì)學(xué)到很多關(guān)于算法的背景知識(shí),現(xiàn)在這本書(shū)還有針對(duì)不同編程語(yǔ)言的特定版本,如Java和C++,里面涵蓋每位程序員應(yīng)知應(yīng)會(huì)的50種算法,我認(rèn)為每位Java程序員都適合這本書(shū)。
3、《算法設(shè)計(jì)指南》
這本書(shū)設(shè)計(jì)了大量的算法及代碼,我特別喜歡這本書(shū)的一大原因就是它能讓你在實(shí)踐中使用算法,也確實(shí)能夠?qū)崒?shí)在在的幫助你了解特定的算法,并用來(lái)解決特定的問(wèn)題,書(shū)中的代碼示例是用C編寫(xiě)的,但不是很深?yuàn)W很好理解,這本書(shū)我十多年前就買(mǎi)了,到現(xiàn)在依然會(huì)是不是看一下
4、《Algorithms For Interviews》
這是另外一本在面試前必讀的算法書(shū)籍,封面本身就很有趣了,如果你仔細(xì)看,封面上的圖片是用名人的縮略圖繪制而成的,這本書(shū)解釋了如何使用算法,我喜歡這本書(shū)是因?yàn)樗姆椒ǎ嬖V你有些時(shí)候通過(guò)不同的方式去學(xué)一些東西,會(huì)讓你更好的理解他
5、《算法技術(shù)手冊(cè)》
這是一本很贊的學(xué)習(xí)編程算法的書(shū),特別是對(duì)于Java程序員。它描述的算法側(cè)重于實(shí)現(xiàn)它們,而不像其他算法書(shū)記一樣使用的大量數(shù)學(xué)知識(shí)。所有的算法都以模式的形式呈現(xiàn),有解釋圖例和偽代碼,以及示例代碼(使用C、c++、Java和Ruby),當(dāng)然也有相關(guān)的算法基礎(chǔ)理論知識(shí)。簡(jiǎn)而言之,這是程序員學(xué)習(xí)算法的最佳書(shū)籍之一。
6、《算法設(shè)計(jì)》
這實(shí)際上是繼Thomas Cormon的算法導(dǎo)論之后的第二本最好的算法書(shū)。它并不是真正的算法介紹,可能更適合有經(jīng)驗(yàn)的程序員,書(shū)中更側(cè)重于算法設(shè)計(jì)。個(gè)人建議你最好先讀好Robert Sedgewick 的《算法》,然后再來(lái)讀這本書(shū)。
7、《算法引論》
這是一本非常適合自學(xué)的書(shū),因?yàn)槔锩嬗泻芏鄦?wèn)題和例子,它旨在提高讀者解決問(wèn)題的能力和理解算法設(shè)計(jì)背后的原則,這一點(diǎn)將會(huì)大大提高你的編程技巧
8、《算法設(shè)計(jì)與分析基礎(chǔ)》
如果你有一定的基礎(chǔ),建議你把這本書(shū)當(dāng)做你的算法進(jìn)階,本書(shū)是第3版,相對(duì)前版調(diào)整了多個(gè)章節(jié)的內(nèi)容和順序,同時(shí)增加了一些算法,并擴(kuò)展了算法的應(yīng)用,使得具體算法和通用算法設(shè)計(jì)技術(shù)的對(duì)應(yīng)更加清晰有序。
這本書(shū)是為Python程序員設(shè)計(jì)的,作者M(jìn)agnus Lie Hetland還撰寫(xiě)過(guò)另一本Python入門(mén)書(shū)《 Python基礎(chǔ)教程》,本書(shū)主要介紹圖形算法,前面已經(jīng)說(shuō)過(guò)算法是獨(dú)立于編程語(yǔ)言的,學(xué)習(xí)Python的算法并不代表你無(wú)法用Java實(shí)現(xiàn)它們,但如果你已經(jīng)有Python基礎(chǔ),那么本書(shū)就能很好的幫助你學(xué)習(xí)算法,
寫(xiě)在最后
以上就是今天要和大家分享的算法書(shū),我認(rèn)為算法是一個(gè)非常復(fù)雜的主題,建議同一本書(shū)可以通讀兩遍,不過(guò)死讀書(shū)是沒(méi)有用的,你還要嘗試用你喜歡的編程語(yǔ)言去實(shí)現(xiàn)它們,漸漸地你會(huì)發(fā)現(xiàn)你的思維和代碼質(zhì)量有了明顯的改進(jìn)。最后,我認(rèn)為世界上只有兩種程序員:一種懂算法,一種不懂。
-
算法
+關(guān)注
關(guān)注
23文章
4623瀏覽量
93103 -
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104901 -
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29825
原文標(biāo)題:無(wú)論你是什么技能方向,這些算法書(shū)都值得你看
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論