學演算法進度
java裡面本身是包含演算法的,只不過它的演算法比著大數據python 那些,還是顯得有點low的。在java編程學習的過程中,你會接觸到一些排序,比如冒泡排序,選擇排序,希爾排序,歸並排序等,這可以當作是學習演算法的入門吧。下面我們從幾個階段來討論:
1.學習階段
剛開始學習java編程,主要還是熟悉它的基本語法,以及常用的框架,做到能夠開發企業級項目,對於一些演算法你可以作為了解,畢竟初級階段,你出去面試找工作,人家也不會難為你問到一些復雜的演算法。
2.工作階段
這個階段你已經步入職場了,在職場中,你會發現,演算法幾乎用不到,可能是你還沒到那個價格,但是這並不意味著,你就不需要學習演算法了。相反,在你工作的同時,你就要留意公司裡面所用的框架,關鍵的技術點,尤其是用到的演算法。有了大致了解後,你就需要利用你工作之餘的時間,開始學習演算法了,因為你不會是想當一輩子的程序員吧?不想的話,你就要下足功夫去學演算法,開源的框架等。
綜上所述,你在學習階段學習一些簡單的演算法,以及對演算法有一個大致的了解,就足夠了。而且在吉林北大青鳥學習期間,老師自然會教什麼時候才是你學習演算法的好時機。
㈡ 什麼是演算法,為什麼需要學演算法,以及演算法學到什麼程度
演算法是一些智商高的牛逼人花費長時間多年總結的解決問題的方法!學演算法就是學習解決問題的方法,下次遇到問題你可以參考原來的方法做出相應的合適的解決方式!至於程度嘛,學無止境!知識每天都在更新的,新演算法也不斷出現。
㈢ 學演算法要學多久才能學會啊
那得看你每天學多少時間了
下面是 《麻省理工學院-演算法導論》(MIT - Introction to Algorithms)2006年5月15號更新完畢 資料 → 計算機教程 VeryCD → 下載
http://lib.verycd.com/2006/03/02/0000092463.html
很不錯的,視頻講解,課件,平時作業,測驗……用電驢下載
㈣ 演算法工程師多久學會
一般主要看個人的悟性了,普通人的話需要6個月到一年左右應該就可以入門了。
㈤ 演算法怎麼學
常言道「演算法才是編程的靈魂」,不管是 Java,python,還是 PHP,都跨不過演算法這個門檻。演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法,厄米變形模型,隨機森林演算法。
㈥ (演算法)到底應該怎麼學
刷與不刷ACM ICPC的人在演算法能力上會有巨大差距。
如果真想深入掌握各種演算法,還是先刷題吧。刷到一定境界再去看更高級的演算法書。
不得不承認現實生活中,一般碼農工作對演算法能力要求太低了,這一度讓人們(包括我)認為演算法似乎不那麼重要。其實學習演算法所鍛煉出來的對各種問題敏感的反應和融會貫通能力還是非常重要的。
編程嘛,就是操作數據輸出結果
演算法和數據結構是配套的,你應該掌握的主要內容應該是:
這個問題用什麼演算法和數據結構能更快解決
這就要求你對常見的結構和演算法了熟於心,你不一定要敲代碼,用紙手寫流程是更快的方式。
對你不懂的數據結構,你要去搜它主要拿來幹嘛的,使用場景是什麼。
細節出錯是你對編程語言不熟悉才會導致的問題,跟你懂不懂演算法沒關系,這個你應該多寫寫練手小程序,背代碼是很愚蠢的行為。
其實我覺得你這么迷茫不如實現一下stl的函數好了
我的經驗就是去模擬(當然模擬只限於基礎的演算法)。甚至是手動模擬,比如我之前學深搜,學遞歸,代碼很簡單,但是因為涉及到棧,而你的大腦短時間內存儲的棧深度只有幾層(臨時變數越多你大腦能模擬的棧深度就越少),實際上你沒辦法用大腦去想。比如學習圖的深搜,一開始我是不理解的,對遞歸沒辦法理解。後來我就在紙上模擬出來,建立好鄰接表以後,按照代碼步驟一步步紙筆來模擬,慢慢就知道了代碼的工作過程。你學習快排也是,當然你背代碼也能寫出來,但是可能不理解,很快就忘了。《演算法導論》書上就有比較細致的執行過程,你手動模擬下partition和quicksort的過程,一開始就用很簡單的用例,把整個過程都手動執行一遍,慢慢就了解了。很多演算法都有一個循環不變式,你代碼如果邏輯正確並且能夠維持循環不變式,一般寫出來就是正確的。
建議找本《演算法》或者《演算法導論》這些教材,每肆猛學畝雹棚習一個演算法就先大致瀏覽下, 然後細致分析每一步代碼的執行過程(紙筆模擬或者代碼單步調試),當確認你真正明白之後,嘗試不看代碼就靠對演算法過程的了解和正確的邏輯去自己實現。
當然,我不認為你寫出很多演算法就是高手了,現在大部分高級語言不需要你重復造輪子,你造出來的質量也遠遜於庫中那些高手的代碼,可以去學習他們代碼的實現,比如看看stl源碼。真正工程用到的代碼與一般演算法實現還是有很多改進的。
最重要的不是你會寫這些算迅則法了,而是學會了很多思想。比如二分的思想,遞歸的思想,分治的思想,動態規劃,貪心等,以及現實中很多數據結構的抽象等。難的不是學會了演算法,而是如何運用這些演算法思想去解決問題。
㈦ 怎麼循序漸進的學習演算法演算法對於程序員有什麼作用
首先,對於大部分程序員而言,在工作中不是必須的,但是你要找工作,特別是剛畢業參加校招的學生,想進入一些比較大的公司(BAT之流),是必須要學好演算法的。
此外,在提高自我技術水平的過程中,比如去閱讀一些優秀的代碼的時候,也是需要演算法功底的,就像去看leveldb、redis源碼的時候,起碼得知道跳錶是個啥吧,看Linux內核文件系統的代碼得知道紅黑樹是個啥吧。
再就是有一個很重要的影響:演算法學的好的話,不論對你思考問題的方式還是對你編程的思維都會有很大的好處。
另外關於刷題的網站還是首推Leetcode。
如果有一些演算法基礎的話,推薦Codeforces。
至於資料書籍的話,其實沒有太多要求,網上的資料很多,隨便谷歌一下就能找到很多詳細的資料。
演算法導論的話不推薦,不推薦初學者看。這本書是本神書,但是這本書的門檻比較高,需要有一定數學基礎和演算法基礎的人去研究,如果你沒有一定的基礎或者對演算法狂熱的學習興趣,你很難啃下去。
改了一下知識列表的結構,分了下類,可能更加清楚一點。這裡面基礎是我覺得必須應該掌握的,中等的是有如有餘力最好學習的,高級的可以了解,可以了解一下,對於個別感興趣的可以深入學習一下。
㈧ 學演算法導論大概要多長時間啊
我們學校里的這門課程的設置是每周兩個課時講課加三個課時習題,總共一個學期。
自學和上課雖然有很大不同,不過這個課時量還是值得參考的,希望能幫到你。