程序員進(jìn)階書單:算法篇
《算法圖解》

通常的算法書讓人昏昏欲睡,莫測(cè)高深,讓人讀得異常費(fèi)勁,備受打擊。
但是這本書不同,這是一本“”好看“的書。說它好看,這本書很薄,以視覺化的方式表達(dá)信息,將復(fù)雜,抽象的理論,闡釋的通俗易懂。就算法入門級(jí)別的角度來說,很可能不會(huì)再碰到比這本更簡(jiǎn)單易懂的了。
如果你剛剛開始接觸算法,或者在算法方面還比較薄弱,建議從這本書開始,把復(fù)雜的事情用說簡(jiǎn)單,這本書做到了。
《算法》

這本書是算法領(lǐng)域的經(jīng)典參考書,全面講述了算法和數(shù)據(jù)結(jié)構(gòu)的必備知識(shí)。全面論述了排序,搜索,圖處理和字符串處理的算法和數(shù)據(jù)結(jié)構(gòu),涵蓋每位程序員應(yīng)知應(yīng)會(huì)的50種算法。
全書算法以java語言實(shí)現(xiàn),即便沒有學(xué)過java,第一章也能夠帶你入門,在語法方面沒有問題。本書有大量的圖解,詳盡的代碼和講解,是極佳的數(shù)據(jù)結(jié)構(gòu)入門書籍。
這本書講得很細(xì)致,很透徹,不是側(cè)重于數(shù)學(xué)推導(dǎo),而是注重于算法的實(shí)。作為初學(xué)者,讀這本書是一個(gè)很明智的選擇,它是非常好的算法入門書。
《算法導(dǎo)論》

本書選材經(jīng)典、內(nèi)容豐富、結(jié)構(gòu)合理、邏輯清晰,將嚴(yán)謹(jǐn)性和全面性融為一體,深入討論各類算法,并著力使這些算法的設(shè)計(jì)和分析能為各個(gè)層次的讀者接受。
這不是一本入門級(jí)的算法書,需要有一定數(shù)學(xué)基礎(chǔ)以及算法入門知識(shí),否則它只能作為你認(rèn)為牛X,但是永遠(yuǎn)也讀不完的書之一,還不能壓泡面:-(
別把這本書做入門書,說是入門書的人要么就是特別厲害而且特別不負(fù)責(zé)任的,要么就是啥都不懂的人以為看到“導(dǎo)論”兩個(gè)字就認(rèn)為特別基礎(chǔ)的人。
關(guān)于數(shù)學(xué),必須是學(xué)過高等數(shù)學(xué),矩陣和離散數(shù)學(xué)的,如果沒學(xué)過這幾本,那么里面的東西也真夠嗆。
如果你想成為算法上不弱于大多數(shù)人的程序員,那么請(qǐng)耐心讀完這本書,這是一本需要一定的耐心和毅力才能讀懂的經(jīng)典
《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)・卷1:基本算法》

高德納(Donald E. Knuth)大神的著作,別被”基本算法”這幾個(gè)字誤導(dǎo)了,這本書的難度根本就不是基礎(chǔ)的:-)
如果你連大O小o都搞不清楚, NP和NP-hard都搞不清楚,基本的插值多項(xiàng)式都不知道;或者連算法導(dǎo)論都沒看,對(duì)數(shù)學(xué)分析沒有興趣,認(rèn)為數(shù)學(xué)只是工具;寫個(gè)算法不會(huì)用偽代碼而一味的用C++或著JAVA來描述,那么可以說不必看這本書了。這里是數(shù)學(xué)的世界,滲透著機(jī)器處理問題的新式思維,一本很多TCS著名學(xué)者都不敢輕言“看懂”的書。
這套書還有其他卷,有興趣的讀者可以搜索一下看,這是一套計(jì)算機(jī)世界的高級(jí)內(nèi)功心法,需要極大的耐心和毅力。如果讀不懂,那也不要過于糾結(jié),我也不懂:)