第一階段:我覺(jué)得我們應該了解一下幾種常用語(yǔ)言(選一種你自己喜歡的了解就行)的基本語(yǔ)法和規則(比如:c,c++,c#,java,perl,Delphi,vb等等)。然后可以開(kāi)始學(xué)學(xué)算法,在此之前當然得必須具備應有的數據基礎了(數學(xué)分析,線(xiàn)性代數,離散數學(xué),概率統計,組合數學(xué))。學(xué)算法,當然得了解它的主要思想,而不要過(guò)分得拘束于特定語(yǔ)言的技巧上。對一些基本的算法和數據結構應該做到了如指掌(最好能背誦),起碼得熟悉以下這幾種數據結構和算法:隊列、棧、壓棧彈棧*作、建立逆續/順序鏈表、快速排序、插入排序、歸并排序、二分查找、二叉樹(shù)、B樹(shù)、深度優(yōu)先、寬度優(yōu)先、最小支撐樹(shù)(一些基本圖算法)。算法(包括數據結構哦),我認為應該是你以后學(xué)學(xué)習的重要基礎,這一步?jīng)]走好的話(huà),后面的路會(huì )比較難走哦!成為高手的夢(mèng)想將會(huì )很難實(shí)現哦。沒(méi)有堅實(shí)的算法和數據結構基礎,寫(xiě)出的一些代碼常常被人認為是垃圾代碼。(呵呵,可能有點(diǎn)言過(guò)其實(shí)!)。覺(jué)得這個(gè)階段學(xué)的不錯的話(huà),可以去OJ做一些題目,呵呵練練,據說(shuō)很用。比較好的有acm.pku.edu.cn acm.tsinghua.edu.cn等等??傊?,這個(gè)階段學(xué)習很重要,關(guān)乎你以后學(xué)習中的方方面面。
提供一些書(shū)目和我對這些書(shū)的一些看法:
CLRS的《算法導論》(Introduction to Algorithms,Second Edition):這本書(shū)我想大家都聽(tīng)說(shuō)過(guò)吧。很適合算法初學(xué)者體會(huì )算法的魅力,這本書(shū)講解的很全面,算法都用偽碼實(shí)現,對編程語(yǔ)言要求不高。書(shū)的前幾章是一些數學(xué)和概率基礎和算法分析的一些說(shuō)明,后面幾章是一些算法的描述。對NP問(wèn)題感興趣的話(huà),可以看看這本書(shū)的VII部分中的NP-Completeness。我覺(jué)得這本書(shū)比較好的一部分是它的附錄部分,對前面的一些背景知識公式進(jìn)行了詳細的闡述和證明以及一些專(zhuān)有名詞進(jìn)行了索引方便檢索。這本書(shū)在國內目前只有英文版的,但南大有個(gè)中文版的(不過(guò)他們太無(wú)恥了居然說(shuō)是他們自己編著(zhù))我看了那個(gè)版本的,其實(shí)是第一版的中文翻譯叫《現代計算機常用數據結構和算法》。其他的我想我不需要多說(shuō)了,有興趣的可以去體會(huì )一下;
Robert Sedgewick(Don Knuth的高徒,不會(huì )不知道Don Knuth吧!!!)的《算法I-IV(c++實(shí)現)基礎、數據結構、排序和搜索》(Algorithms in C++ Parts 1-4 Fundamentals,Data Structures,Sorting,Searching)以及《Algorithms in C Part 5 Graph Algorithms》:他的書(shū)寫(xiě)的淺鮮易懂,所有的算法都用代碼實(shí)現了,普林斯頓也在用。我只看了1-4的一部分,圖那部分前幾天剛買(mǎi)還沒(méi)看。很不錯,里面的算法都是比較常用的一些算法。不過(guò)建議別看中文版的那本,我買(mǎi)了中文版的很是后悔,翻譯的太太。。。次了(語(yǔ)言太晦澀了,翻譯的那人好像沒(méi)學(xué)過(guò)計算機),英文版的可以買(mǎi)高教出的,很便宜好像30.00吧!電力的有一本C實(shí)現的英文版,不過(guò)要78.00大洋。
[沙特]M.H.Alsuwaiyel的《算法設計技巧與分析》(Algorithms Design Techniques and Analysis):這本書(shū)主要關(guān)注的是算法設計部分。分析了比較多的算法。對數據結構這不是很側重,這本書(shū)比CLRS更具有專(zhuān)業(yè)氣息,感覺(jué)更像教材。由于我也沒(méi)看完,所以不敢多做評價(jià),只能說(shuō)說(shuō)我目前看的感覺(jué)。
Sartaj Sahni《數據結構、算法與應用》(Data Structures,Algorithms,and Application in C++):清華的那本C++數據結構就是抄這本書(shū)的,書(shū)對C++語(yǔ)言有一定的要求,呵呵所以對語(yǔ)言不是很熟悉的話(huà),看起來(lái)有點(diǎn)痛苦哦!所以并不是很推薦(如果C++不是學(xué)的很好)。書(shū)中除了對遞歸沒(méi)有詳細的闡述,可以說(shuō)是個(gè)缺陷吧!其他的描述還是很不錯的!翻譯也相當不錯。
Jon Bentley的《編程珠璣》(Programming Pearls,Second Edition):好書(shū)的說(shuō),沒(méi)看完的說(shuō)!最喜歡的是這本書(shū)每章的后面都提供了一些進(jìn)階閱讀,很是欣賞這一部分。不是說(shuō)書(shū)中其他部分就不好,這本書(shū),確實(shí)很不錯,對一些算法的使用時(shí)機給了比較好的引導,什么時(shí)候用合并排序,什么時(shí)候用插入排序,二分查找的重要性。對算法在實(shí)際中的應用給予了很好的啟發(fā)和評價(jià)。有英文版的,推薦看英文版!中文版的翻譯和一般。呵呵!!不好意思,偶還在看中,只能說(shuō)到這啦!!!
聯(lián)系客服