演算法書如何選擇?

初學者剛剛有了C的語言基礎,自學演算法,初步學習什麼書比較好,進階的話看什麼書比較好,或者有什麼視頻,博客,求有經驗者和各位大佬推薦。


liuxinyu95/AlgoXY

面向現代語言設計的演算法入門書,中英文雙語的,電子版完全免費。


《演算法》第四版,那本紅色的

配合coursera上面有作者開的課程algorithm,進度很統一,配合來看十分好。有很多的動圖,來直觀的演示演算法的過程,且難度適當,而且還有偏應用的program assignment。而且還有寫的十分優雅的事例和框架代碼。。作為演算法的入門課程再合適不過。課程的質量遠勝我國各類書籍和課程,十分推薦


https://book.douban.com/subject/24749842/

別忘了做題。


一如既往地安利演算法導論

前幾天在群里遇到好多看其他書的人,他們居然不知道大theta和大O是什麼意思#(滑稽)


http://jeffe.cs.illinois.edu/teaching/algorithms/

我們的演算法課教材。


如果有C++建議學習鄧俊輝老師的數據結構課程,加上配套的書就足夠。實際上學習這門課需要的C++的知識並不多,你有C語言基礎很快就能掌握C++面向對象的知識,然後就能去學了。課程在學堂在線里。


個人始終認為,任何東西都沒有最好,只有最適合自己,當然,你也可以說適合自己的就是最好的。演算法書也是一樣的道理。本人雖然已是一個有著2年開發經驗的Java後端,但因為本科不是計算機專業,所以演算法和數據結構相關的基礎知識很是薄弱。

不久前,開始確定了把演算法和數據結構的技能補起來,也就開始搜索和挑選演算法領域的好書和好文章。好東西不敢獨享,在此把我這一個來月收集的一些資料做一個匯總整理出來,希望可以幫助到你。

目前,IT界比較公認的演算法與數據結構相關的好書有:

《演算法》適合入門

使用更為容易的Java語言作為教學語言、覆蓋所有常用的數據結構和演算法,並均給出其完整實現、包含大量的圖示用於可視化演算法——事實上這是我讀過的圖示最為豐富形象的書籍,這也是我稱其為最好的演算法入門書籍的原因。

《編程珠璣(第 2 版)》適合進階

本書的確在強調演算法,但是除了常規的演算法,作者更多的是在表達出一種演算法以外的思想:高效的演算法沒錯,但是正確的事情應該用正確的方法來做。 每個演算法都有高效的經典例子,但是什麼時候用什麼樣的演算法,探究問題的本質,真正的優雅的解決問題,才是本書所要傳達的精神。

《編程珠璣(續)》適合進階

本書最大的亮點就是引導你去思考,不停地去思考,思考最佳的解決方案。看本書是一個既痛苦也快樂的歷程,痛苦在於你必須竭盡腦汁地去想,運用 brain bursting 去得出儘可能多儘可能好的方法,快樂在於你提出一個優雅的方案或者對大師的方案拍案叫絕的瞬間。閱讀這本書,一定不要泛泛而讀,每一章都值得你用一個月的時間來思考。

---------------------------------------------------------------------------------

未完,等補充。

參考資料:

1、演算法與數據結構的5本推薦書籍

2、MSRA鞏朋的演算法之路


《演算法導論》是給大神們看的,不適合入門。而且很多章節過於繁複,很容易讓自己局限在一個問題上,而對演算法失去了全貌的把控。一般書名帶個導論,引論什麼的,普通人都可以略過了。


花一個周末看看這本書就行了。現在幾乎所有的編程語言都把常用數據結構和演算法弄成了包,沒必要自己去重新造輪子。


入門可以看數據結構與演算法分析(c語言黑色那本),再來本演算法第4版(java描述),雖然是java但是對理解演算法思想沒有影響。入完門後可以看看演算法導論或者國外一些講高級數據結構的經典書籍。


既然學了C語言,那就選《演算法:C語言實現》啊,神書!現在出了兩本。

想搞演算法,最好搞搞ACM刷刷題寫寫代碼,代碼能很快的敲出來,說明就對演算法細節理解足夠深刻了。


圖裡的書不一定適合入門,但絕對是提高演算法的經典書籍


最萌編程高手是這樣煉成的 - 知乎專欄

看了這篇就懂了,內含多種語言,入門的比較多,也有進階的,很全面。


演算法基礎(第五版)

(美) Richard E. Neapolitan著

個人覺得寫的比較淺顯易懂,能有興趣讀下去


個人覺得還是演算法導論好,網上有公開課,還有人整理了各章練習題答案。只要慢慢來,對於演算法的理解會有質的不同。


演算法導論


演算法設計


推薦閱讀:

超長字元串中如何快速查找一個子串?
請問編輯器中的undo和redo操作是如何實現的?
怎樣學好數據結構和編程?
鏈表是一種數據結構還是數據類型?
初學數據結構,怎麼理解書上的這句話?

TAG:互聯網 | 演算法 | 編程 | 計算機 | 數據結構 |