《算法第4版》与《算法导论》比较
個人認(rèn)為:《算法第4版》這本書,比標(biāo)準(zhǔn)教材《算法導(dǎo)論》要好非常非常多。
《算法導(dǎo)論》主要是探討了如何在數(shù)學(xué)模型寫一個漂亮的算法,老版還居然使用pseudo code。在學(xué)術(shù)上,毫無疑問《算法導(dǎo)論》更高。而此書,則在實際應(yīng)用上比算法導(dǎo)論高。
《算法導(dǎo)論》是我曾經(jīng)學(xué)過的教材。學(xué)過算法導(dǎo)論以后在真實的工程上一個最起碼的問題常常困惑我。就是這些偽代碼,或者說C代碼如何實施在高級語言Java(Python或者C#)上。
而難點在于如下幾點:
1. 《算法導(dǎo)論》是基于偽代碼或者C的。而C的容器是遠遠不及Java這種更高級的語言的。那么,如果在Java程序上,我真的需要實現(xiàn)一個算法的時候,我應(yīng)該如何處理Java已有的容器的關(guān)系?《算法》這本書基本給了我們明確的答案——最起碼ArrayList不要用。java的ArrayList雜糅了太多的東西。千萬不要把它當(dāng)成Array或者LinkedList,它兩者都不是!
2. 《算法討論》是基于純粹的過程語言的討論(偽代碼的版本也是)。所有的函數(shù)都可以認(rèn)為是全局函數(shù)。而對于一個面向?qū)ο蟮恼Z言,我們應(yīng)該如何封裝函數(shù)?
3. 本書真正對我有啟發(fā)的倒是數(shù)據(jù)結(jié)構(gòu)的討論。Linus曾經(jīng)說過,只有爛的程序員才考慮代碼,而牛逼的程序員考慮的是數(shù)據(jù)結(jié)構(gòu)。《算法導(dǎo)論》中對于數(shù)據(jù)結(jié)構(gòu)的具體實現(xiàn)是缺乏討論的。
4. 《算法》這本書配合open courses 其實還探討了,問題分析部分。比如說那個迷宮問題。Union Find 這個算法其實非常簡單,但是如何知道迷宮這個問題可以抽象成Union Find來解決,才是真正需要的能力。
我到現(xiàn)在還記得斯坦福的《算法導(dǎo)論》的公開課,該書的作者,那個教授親口說的話:“我對于實現(xiàn)一個skip list 還是很有信心的,紅黑樹我?guī)缀鯊膩頉]有寫對過……還是skip list好,我來嘗試一下,或許這次能比較快寫出來……”
《算法》修訂了七八次以后才把代碼中的錯誤逐一修正,論代碼的美感,不如《算法導(dǎo)論》優(yōu)美。但是這也正是做學(xué)術(shù)和做工程的區(qū)別。如果是一本工程師的書,這本書比算法導(dǎo)論好太多太多了。
https://book.douban.com/review/6526736/
總結(jié)
以上是生活随笔為你收集整理的《算法第4版》与《算法导论》比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100个Python实战项目(九)制作贪
- 下一篇: 优雅地用宏实现环形缓冲区