首先,對於大部分程序員而言,在工作中不是必須的,但是你要找工作,特別是剛畢業參加校招的學生,想進入一些比較大的公司(BAT之流),是必須要學好演算法的。
此外,在提高自我技術水平的過程中,比如去閱讀一些優秀的代碼的時候,也是需要演算法功底的,就像去看leveldb、redis源碼的時候,起碼得知道跳錶是個啥吧,看Linux內核文件系統的代碼得知道紅黑樹是個啥吧。
再就是有一個很重要的影響:演算法學的好的話,不論對你思考問題的方式還是對你編程的思維都會有很大的好處。
另外關於刷題的網站還是首推Leetcode。
如果有一些演算法基礎的話,推薦Codeforces。
至於資料書籍的話,其實沒有太多要求,網上的資料很多,隨便谷歌一下就能找到很多詳細的資料。
演算法導論的話不推薦,不推薦初學者看。這本書是本神書,但是這本書的門檻比較高,需要有一定數學基礎和演算法基礎的人去研究,如果你沒有一定的基礎或者對演算法狂熱的學習興趣,你很難啃下去。
改了一下知識列表的結構,分了下類,可能更加清楚一點。這裡面基礎是我覺得必須應該掌握的,中等的是有如有餘力最好學習的,高級的可以了解,可以了解一下,對於個別感興趣的可以深入學習一下。
『貳』 數據結構和演算法用什麼語言來學習入手比較好
C語言會比較好,C更加基礎,書籍大部分也是C、C++的,如果只考慮java和C++的話,C++比較好,演算法的話《演算法導論》很經典,數據結構的話可以看《演算法與數據結構》傅清祥 王曉東版的。
『叄』 《演算法導論》這本書是用什麼語言寫的
用偽代碼(Pseudocode)寫的。偽代碼(Pseudocode)是一種演算法描述語言,本身不能被解釋或者編譯。使用偽代碼的目的是為了使被描述的演算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現。
『肆』 演算法導論書頁邊上的框起來的數字是什麼。。有什麼用。。
是對應英文原版書的頁碼。
『伍』 演算法導論裡面的大師解法是什麼 用大師解法計算下面遞歸表達式的時間復雜度. T(n)=2T(n/2) + Θ(n^0.1)
#a i從0循環到n,演算法復雜度為O(n)。
#b 一共要做n^2/2次加法,演算法復雜度為O(n^2)。
#c 要求一個k,滿足2^k>=n ,演算法復雜度為O(log(n))
#d 注意到這個函數做的事跟#c的函數恰好相反,演算法復雜度相同,也是O(log(n))
#e 因為已算出#g每次做3(n-3)次加法,那麼i從1到n,一共做2/3*(n^2-5n+6)次加法,所以復雜度為O(n^2)。
#f 這個函數可以寫成公式T(n)=T(n-2)+T(n-1),這個遞歸式跟黃金分割有關系,解這個遞歸式,可以知道 T(n) = O((√5-1/2)^n)
#g 函數調用一共做3(n-3)次加法,所以復雜度為O(n)
PenitentSin 這位兄台的#c 算的不對啦,#g也不對。還有#f,這個雖然是遞歸,但不是遞歸就等於指數級的復雜度,要解遞歸方程才能斷定的。
關於演算法復雜度,《演算法導論》一書中第四章有一個主定理,記住這個定理之後,這些問題就小case了(除了復雜遞歸之外)。
『陸』 可以《C Primer Plus》和《演算法導論》一起使用學習1C語言嗎初學者
不行。C primer plus 可以先學,但是演算法導論這個你必須要有深厚的編程功底,否則還是老老實實把C語言基礎打牢固,並且學習一些演算法基礎上才可以看演算法導論(當然要是你聰明有天賦,直接學也是可以的)
『柒』 學習計算機演算法有什麼用啊
《演算法導論》
《演算法概論》
《演算法藝術與信息學競賽》
《世界大學生程序設計競賽(acm/icpc)高級教程》--程序設計中常用的計算思維方式
這是吳文虎寫的
很好
現在很缺貨阿
麻煩加點分吧!!!!!!!!