學演算法前後
⑴ 學數據結構和演算法前,是不是要先學離散數學
不用的,二者不是前導課後續課的關系
⑵ 學數據結構和演算法之前要先學什麼
學習演算法和數據結構就是把你的程序運行速度變得更快,內存需求變得更小,代碼長度變得更短。正式進入數據結構和演算法前需要了解下C++內存的那些事。
在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。
棧,在執行函數時,函數內局部變數的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限;
堆,就是那些由new分配的內存塊,它們的釋放編譯器不去管,由我們的應用程序去控制,一般一個new就要對應一個delete。如果程序員沒有釋放掉,那麼在程序結束後,操作系統會自動回收;
自由存儲區,就是那些由malloc等分配的內存塊,它和堆是十分相似的,不過它是用free來結束自己的生命的;
全局/靜態存儲區,全局變數和靜態變數被分配到同一塊內存中,在以前的C語言中,全局變數又分為初始化的和未初始化的,在C++裡面沒有這個區分了,他們共同佔用同一塊內存區;
常量存儲區,這是一塊比較特殊的存儲區,它們裡面存放的是常量,不允許修改。
以上內容摘自《C++內存管理技術內幕》,學習數據結構和演算法前可以多多看一下。
⑶ 學習java的順序是什麼比如說是先學編程語言還是演算法還是數據結構什麼的
先學基本的編程語言,至於演算法跟數據結構,跟特定的語言並沒有特別大的關系,也就是學什麼語言都可以學,屬於進階
⑷ 應該先學演算法還是數據結構
個人愚見,數據結構是演算法的凝結品,因為各種數據常用或通用的數據結構能夠解決在實際應用中的一些問題,然而演算法就是解決問題的一套思路,當這套解決問題的思路固定之後,就會有相應成熟的數據結構產生,也就是雞和雞蛋那個先存在的問題,如果按照正常的思路,先學數據結構,然後再學演算法,不過一般在學數據結構的時候,肯定會有一些知名 的演算法會順帶地學到
⑸ 學演算法,要不要先學數學
你好,我是數學專業的,我也學計算機專業,老師告訴我,我們專業的優點就在演算法設計方面,因為我們比你們有數學的思維…其實演算法不需要某門課程為基礎,熟能生巧,當你編了大量的程序時,你自然具備了數學的思維,就不會在在乎什麼數學基礎了…祝你好運
⑹ 學數據結構和演算法之前要先學什麼
不需要其他的了,因為數據結構跟c一樣也是一么基礎課,學了他是為後期學其他課程作準備的,如編譯原理!!!
數學分析暫時還用不著但是可以鍛煉思維能力!!
數據結構里的內容跟離散數學關系很大,比如圖,等等!!
必須把離散學好!!
⑺ 關於演算法的學習過程
你說的應該是計算機演算法吧,如果真要在這上面深究的話,建議還是提高數學基礎,最基礎的兩門課是離散數學與數據結構,當然一般高校的教材都還是比較不錯的,數據結構這個東西一開始比較抽象,等你學過後悟一悟就會發現很有意思,把它學好,爭取能自己理解並實際編程實現常用的所有數據結構及其相關演算法,然後就看「計算機演算法基礎」這本書吧,從分治法到回溯法等等等等,把常用的演算法(典型問題)學會並用程序實現它們,這樣的話就差不多了。推薦幾本書:《數據結構》、《計算機演算法基礎》、《演算法:C語言實現》(兩本,普林斯頓大學的Robert著)。另外,當你基礎夠好的時候,就看看演算法界的宗師Donald E. Knuth(高德納)的經典演算法巨作<The Art Of Computer Programming>(簡稱TAOCP,共3卷)及其有關數學基礎的書<具體數學>.
當你把這一切都學完(學會)之後,相信你的演算法水平已經到了個相當的高度。比爾·蓋茨曾說過,如果學完了3卷TAOCP,就把簡歷寄給他。努力吧!演算法很有趣,一步步來,相信你會成功的。
⑻ 在學演算法設計與分析之前就先學習什麼課程
首先要學一門編程語言,推薦學習C++。
其次,要學習數據結構。