程序員工作後看演算法書有用嗎?效果怎樣?

工作兩年,感覺自己的編碼能力弱成渣渣,最近突然想惡補下演算法,但是做這些事情是不是已經太遲了,除了看書,有沒什麼其他方法可以幫助有效提高編碼能力,工作偏底層,工作中大部分時間是對已有的代碼修修改改,但是總覺得編碼能力一直停留在某個水平。怎樣才能更有效地積累編碼能力。。有沒人有經驗分享下。


先理解時間和空間複雜度的計算,然後把你的語言的容器和演算法(譬如說C++就是各種容器和&)的複雜度背下來,然後找出你用了他們的很多代碼,不斷地練習計算複雜度,然後通過測量時間的方法,擬合複雜度曲線來看看你算的是不是對的。等你對這些東西有了感覺之後(對於某些天才來說不需要這麼做,看一下複雜度的概念做幾道題就建立起感覺了),你再去看演算法的具體實現,事半功倍。


跳槽的時候有用


沒太分清題主究竟是想提高自己的演算法能力還是編碼能力

如果是做演算法,主要是做優化,整天和複雜度打交道。俗套的回答是打回去看《演算法導論》(....)

如果是一般的程序設計,建議多讀讀開源代碼,比較提高能力。

關鍵是題主你想做什麼了。


如果你不想造輪子,那麼只要知道大部分演算法的性能就可以了,因為目前大牛造出來的輪子肯定比題主自己的強。


你的想法是通過複習演算法 來提高編碼能力 我就當你的編碼能力和編程能力是一回事了

1. 取決於你的工作內容

用的上演算法當然會感覺很好很強大 要是用到的很少那你看演算法還不如隨意找點小題目或小的實際問題 或者是小開源項目做一下 這樣比較直接 演算法好編碼能力基本都差不了 編碼能力好演算法其實未必強大

2. 取決於你對演算法的理解程度

比如很多人都啃過演算法書 但是實際遇到某問題的時候很多人都頭暈不知如何是好 然後找到大牛的解決方法的時候才發現 這個演算法我早知道的啊 其實獨孤九劍就九招 你怎麼就臨戰的時候耍不出來 這才是問題所在


理解一個經典演算法,跟自己能獨立寫出並靈活運用,是兩種不同的能力。

理論指導實踐,如果TZ理論欠缺,還是認真補位很關鍵


推薦閱讀:

一道阿里前端筆試題,求思路?
什麼樣的題目解出來可以是這樣的二維碼?
蛇形圍欄能否解決交通擁堵問題?這種設計思路說明什麼問題?
豆瓣猜的作用到底是什麼?

TAG:書籍推薦 | 演算法 | 編程 | 工作 | 能力提升 |