程序員如何通過《演算法導論》學習?這本書適不適合演算法基礎薄弱的程序員?

可不可以數據結構和演算法部分分開來看?


不適合,至少不適合那些想直接通讀演算法導論的人。。。

別把這本書做入門書,說是入門書的人要麼就是特別厲害而且特別不負責任的,要麼就是啥都不懂的人以為看到「導論」兩個字就認為特別基礎的人。


對不起,我這個答題機是給要求高的同學準備的,你邀請錯人了


我的理解:《演算法導論》的讀者對象是 對自己 或者 對演算法 要求比較高的人。


既然對演算法要求不高,那你為什麼要通過演算法導論學習演算法!


程序員如何通過《演算法導論》學習?這本書適不適合演算法基礎薄弱的程序員?

演算法導論尚未看完,第一個問題不敢妄下結論。第二個問題,我的回答是:

在特定的情況下,適合,條件是:

1. 在學習了簡單的數據結構之後希望對演算法更深入的研究。

2. 時間充足;

3. 有一定的數學預備知識(高中加一點概率學和級數大部分就夠用,其他涉及到的臨時抱佛腳咯~,書里都有提供,= =,再不會,先跳過往後再聊);

說白了,就是有愛,時多,速來。

但是在對於題主原本意思的程序員A,我覺得不適合,或者說,不建議。

為什麼這麼說呢,因為我查看了問題的日誌,發現了問題曾經是這樣的:

對於對演算法要求不高的程序員如何通過《演算法導論》學習?

於是乎我覺得不適合的原因有下:

  1. 《演算法導論》中大量涉及演算法設計以及演算法證明,從實用角度看,投入的時間不是很值得。 而程序員A哥哥對演算法要求不高,我是這樣理解的:A希望能有一定的實用演算法儲量,以及目測出演算法的大致性質,在日常工作中可以使用,並不需要對演算法有多麼深刻的理解,更不需要去嚴謹準確的證明或者推斷某個演算法的正確性以及時間複雜度,《演算法導論》自然就不合適了。(當然如果是為了自我提升,或者希望對演算法有更深的理解。我還是推薦啃下去的。)
  2. 《演算法導論》主要內容並不是數據結構入門的教程,如果數據結構基本知識不足,啃起來很費勁,容易放棄。《演算法導論》有近一半的章節都是以基本數據結構為基礎進行擴展的的數據結構,這樣一來門檻就抬高了,倘若翻開書就覺得挖槽很黃很暴力,瞎人一臉地對不知道什麼鬼的東西進行演算法證明,那這書得啃到猴年馬月去了。

對於演算法基礎薄弱的娃,我更推薦《演算法 第4版》,它更傾向於演算法的實現,因此知識量比《演算法導論》要少很多,讀起來更爽快些。覺得太大塊頭還是太難,讀起來遙遙無期,可以先看《啊哈!演算法》+《大話數據結構》這類趣味書來壓點入門知識再去啃《演算法 第4版》。(畢竟我也不知道基礎薄弱到底應該是薄弱到什麼程度。。。)

最後上一下MIT關於演算法導論課程的預備知識說明:


要求不高是什麼要求?


我最近也在看算導,如果沒有重點的話,比如很多數學推導過程,就很費時間。


推薦閱讀:

如何生成多個互不重疊的不同半徑圓?
stl partition演算法有兩種寫法,哪種效率高?
演算法導論第三版的翻譯水平如何?
該直接上《演算法導論》 還是先看完 《演算法 第四版》?

TAG:程序員 | 演算法 | 演算法導論書籍 |