學資料結構和演算法要學高數麼,學資料結構和演算法之前要先學什麼?

時間 2021-08-14 22:33:11

1樓:匿名使用者

高數和資料結構和演算法沒有必然的關係! 如果不是像教授搞研究一樣,一般高深的數學知識是用不上的,中學的數學知識足夠研究長見的演算法了! 你可以先去學資料結構和演算法,不用想太多,行動就是,用著數學了再說!

2樓:匿名使用者

我學的是計算機和數學的交叉課程!總結一下,如果你不是做研究和向很前沿發展:

1.資料結構和演算法很重要。

2. 高等數學對資料結構基本沒有幫助,但並不一定非要學!離散數學有用!

3. 你看得演算法和應用的書,直接看大學教材《資料結構》就可以,通篇都是c語言的舉例,很好懂,和數學關係很小

4. 閱讀優秀的源**很多時候都只能理解裡面的小技巧,對作者的構思沒有系統的學過設計話你是參悟不到的,因此一邊讀**一邊看書都可以

另外資料結構真的不難,也不需要懂太多數學知識,其實大部分都是基礎演算法,建議你安裝一個標c的編譯器,按照教材多學多做,很快就能掌握了

現在實際上應用的資料結構專門知識其實很少,大部分都是簡單應用

學資料結構和演算法之前要先學什麼?

3樓:匿名使用者

學習演算法和資料結構就是把你的程式執行速度變得更快,記憶體需求變得更小,**長度變得更短。正式進入資料結構和演算法前需要了解下c++記憶體的那些事。

在c++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。

棧,在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器的指令集中,效率很高,但是分配的記憶體容量有限;

堆,就是那些由new分配的記憶體塊,它們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就要對應一個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動**;

自由儲存區,就是那些由malloc等分配的記憶體塊,它和堆是十分相似的,不過它是用free來結束自己的生命的;

全域性/靜態儲存區,全域性變數和靜態變數被分配到同一塊記憶體中,在以前的c語言中,全域性變數又分為初始化的和未初始化的,在c++裡面沒有這個區分了,他們共同佔用同一塊記憶體區;

常量儲存區,這是一塊比較特殊的儲存區,它們裡面存放的是常量,不允許修改。

以上內容摘自《c++記憶體管理技術內幕》,學習資料結構和演算法前可以多多看一下。

學習“資料結構與演算法”需要哪些數學基礎?

4樓:

你好,資料結構不需要數學基礎,要的是基本的理解能力和**能力,還有就是多思考,資料結構很簡單的。

什麼是資料結構和演算法?學演算法還需要去了解資料結構嗎?

5樓:匿名使用者

你這理解不完全正確。

因為資料結構不只是記憶體中資料的排列,它是對資料的一種組織方式,就像圖書館要排書一樣,是為了便於操作,同時它本身也整合了對通用操作:比如查詢、比較等的支援。陣列不是一種資料結構,而是一種資料型別。

一個完整的資料結構包括邏輯結構和儲存結構。通常選擇了資料結構,演算法也隨之確定,是資料而不是演算法是系統構造的關鍵因素。

因此在語言實現上,資料結構通常也會包含與之相對應的演算法集合,這些演算法是指基本演算法:查詢、索引、比較等。

資料結構的邏輯結構和硬體是沒有關係的,而其儲存結構受到計算機硬體系統工作方式的影響,通常這點影響在於資料時順序儲存還是離散儲存。演算法的基礎是資料結構。只有指定明確的資料結構,演算法才能設計完成,脫離資料結構,演算法是無法,也不可能成立的。

因為不需要資料的演算法就不是一個有效的計算機演算法,演算法中任何對資料的組織形式都可以被稱之為資料結構。

2.資料結構在程式設計中的地位是極其重要的,是一個程式實現的基礎中的基礎,在此基礎上才能構建演算法。通常而言,你不瞭解什麼高深的演算法,一樣能完成工作,但是如果你不瞭解基本的資料結構,那麼可以說,你根本就不能完成一個任何有實質性內容的程式。

donald ervin knuth教授在其《計算機程式設計藝術》的第一卷《基本演算法》中花費的絕大部分的篇幅去論述資料結構。由此可見資料結構對演算法的重要性。

6樓:匿名使用者

資料結構可以優化資料的存諸,使得資料存諸能夠更省空間,查詢更高效。

有時候資料結構本身就是一種演算法,比如線段樹,splay樹,堆。

而有一些演算法是要建立在資料結構的基礎之上才能夠更高效的。

對於不同的演算法需要採用合適的資料結構。比如最短路徑演算法,對於希疏圖,我們要用連線表來存連。這樣才不能導至大量的空連。而且連的查詢也更高效。

而對於密圖,我們採用連線矩陣來存諸。

7樓:匿名使用者

你可以這樣理解,資料結構你把它理解成excel裡面的製作一張**的表模,比如你做一張工資表,那麼表模肯定你要考慮每一個資料的意義和它們應該放置於哪個位置。而演算法就是你在**內部資料間的關聯運算,可以是邏輯的也可以是數學的。

因此你製作一張工資表,你肯定要先定結構,然後再定演算法。當然你說只學演算法不學結構照樣能做出結構來,但你考慮更高一個層次,如果你這張工資表只是一個公司幾百份**中的一份,你如果不把它的結構搞得很清楚的表達,你其他**要呼叫這張**的資料就無從做到,而你如果用結構來表示,就很清晰了,這就是結構和演算法的不同。

結構是較為巨集觀的思考方式,演算法是微觀的實現,它們之間密不可分。當然在現在軟體開發工程裡面,系統工程師可以分為做結構和做演算法的,但一般做結構的都是更核心的成員,他們懂演算法,但不用做演算法,他們只要把資料結構模型構造好,工程分拆清晰,讓其他的程式設計師按照他們規劃的結構去做細緻的工作就可以了。

8樓:匿名使用者

資料結構與演算法密不可分。

資料結構注重了資料的組織形式。 資料的一定的組織方式已決定了只適用於某此演算法。

演算法尋求在指定資料結構上的最優解, 也就是最有效率的方法。 為此也有此設計特定的資料結構的, 比如紅黑樹就是被髮明出來的。

好的演算法: 儲存空間效率(資料結構)與時間效率(演算法效能)達到一定的平衡, 而非只突出時間效率。 所以一定要同時考慮這兩個方面才能設計出一個好的演算法。

應用中還要考慮特定的環境, 比如嵌入式, 沒有大的記憶體, 這時有些佔用大量的記憶體的一些演算法就不適用了。

另一種角度: 借用c++中stl的概念,

資料結構: 在c++中定義為容器, 比如:vector(陣列) list(連結串列)。。。

而這些容器對於裝入其中的東西並無限制, 比如使用者可定義裝int, 也可以裝char, 還可以裝string資料。

演算法: 在c++中定義也叫演算法, 比如find, 查詢指定的一個元素, 你可在vector容器中查詢 , 也可用在list容器查詢。 但是在不同的容器中查詢效率是不同的, 這是容器本身決定的。

9樓:匿名使用者

呵呵,這兩個都是要學的。。。不學你怎麼做好程式設計

10樓:碼寶寶呀

資料結構就是“多維度”的模版 + 內部與外部的聯絡。 當您定義好資料結構的時候,一個初始的資料模版就被定義出來,然後這個利用這個模版,您可以生成你想要的資料的模樣。 這些資料內部的值可以內在有各種各樣的聯絡,資料與資料直接也有各種個樣的聯絡。

利用資料內部和外部的聯絡的配合,可以幫助人們抽象各種個樣的問題。 常見的資料結構有連結串列,棧, 佇列,陣列等等。

演算法以我的理解就是解決一個問題時需要的一個流程。通常一個演算法能解決一類相似的問題,只要你的程式按照既定演算法的步驟進行,就可以解決此類問題。對學習演算法,我的建議就是把演算法具體成影象,把幾個關鍵的步驟用影象記憶下來。

資料結構和演算法是相輔相成的。資料結構是為演算法服務的,演算法要建立在特定的資料結構之上,因此無法孤立資料結構來講演算法,也無法孤立演算法來講資料結構。所以學演算法就會涉及到資料結構,同樣學資料結構也必須學到演算法。

想知道更多的資料結構與演算法知識嗎?可以去了解一下小碼哥李明傑。

學奧數有用麼,學奧數有用麼?

主要是鍛鍊思維能力,其次就是提高科學數學水平,把握靈活腦子 好處 一 思維能力的鍛鍊。奧數包涵了發散思維 收斂思維 換元思維 反向思維 逆向思維 邏輯思維 空間思維 立體思維等等二十幾種思維方式,眾所周知,思維能力是一個孩子的智力的核心。奧數學習對開拓思路有著重要作用。奧數學習好的學生整個理科都會比...

臨床醫學要學高數嗎,醫學生必須要學高數和物理嗎

醫學院的學生是要學高數和物理的,即在醫療系臨床醫學本科大一時,都會學習高數和物理,但需要掌握的知識比較淺,只要認真學好基本的就行了。 來自卯洞妙語連珠的綠蘿 需要學習的,剛上大學的第一二年會學習基礎課程的,然後在第三年開始學習專業知識的。醫學生必須要學高數和物理嗎 阿樓愛吃肉 醫學生是有必要學習高數...

學會計要學高數嗎,學會計的時候學高數是很難嗎?

會計專業是需要學高數的,但並不學所有的。如果將高數分為上下冊,會計專業只需學上冊 即,極限 導數 不定積分 定積分,還有幾個定理 下冊則不需要學 如,重積分 偏導 偏微 級數等 嚴格講,線性代數 概率 統計不屬於 高數範疇 但會計還是要學一點點。在具體的應用領域中,主要是管理會計 工商管理 貨幣銀行...