數學建模跟資料結構和演算法之間是什麼關係

2021-03-04 05:07:40 字數 5049 閱讀 1877

1樓:匿名使用者

高標準的資料結構能使執行效果及儲存效率更高,資料結構執行快與慢主要與檢索演算法和索引技術效率高低相關。在各式各樣的電腦程式的設計中,選擇設計什麼樣的資料結構是乙個最基本的考慮因素。經過工作人員及系統操作人員大量實踐證明,乙個計算機系統完成***與壞,最終取決於最初資料結構定位的高低,使用乙個優質的資料結構,在系統後期運算及使用中都會有乙個良好的執行環境。

所以不管是在做系統時定先定位資料結構,根據特定演算法來選擇相適用的資料結構。資料結構在整個環節都是非常重要的

資料結構和演算法有什麼關係?資料結構就是演算法嗎?

2樓:天涯虧科

著名資料專家沃斯曾說:演算法+資料結構=程式

3樓:_了卻了

它們可以相互區別也可以相互統一。廣義上講,演算法是某一系列運算步 驟,它表達解決某一類計算問題的一般方法,對這類方法的任何乙個輸入,它可以按步驟一步一步計算,最終產生乙個輸出。但是對於所有的計算問題,都離不開要 計算的物件或者要處理的資訊,而如何高效的把它們組織起來,就是資料結構關心的問題,所以演算法是離不開資料結構的。

單講資料結構,它指資料的組織結構,它 有邏輯結構和物理結構,另外還包括一些定義在某種資料結構上的演算法,它只限於某一特定資料結構中使用,可以認為它是資料結構的組成部分,比如棧的壓棧操 作,這些演算法雖小但很重要,可以看成是它們決定了資料結構的外部特性,比如同樣是堆,有二叉堆,二項式堆,它們除了內部結構的不同,最大的還是外部操作的 演算法效能不同,也決定了它們本質上的不同,如果外部效能一樣,那研究將是毫無意義的。總之,不能脫離演算法討論資料結構,也不能脫離資料結構研究演算法。

4樓:匿名使用者

資料結構是資料間的有機

關係,演算法是對資料的操作步驟。這兩個概念間的邏輯關係貫穿了整個程式世界,首先二者表現為不可分割的關係。沒有資料間的有機關係,程式根本無法設計,例如,設計a+b的程式,你總得找到a和b的值吧,a和b必須是可以互相找到的才能進行程式運算,a和b就必然要聯結成一定的關係,或是線性關係,或是樹型關係,或者是圖型關係,你的程式才能產生,雜亂無章的資料-------就是沒有資料結構的資料,是沒有演算法的,你試試做乙個電子運動的時間和座標對應的演算法看看行不行,顯然不行。

因為有了資料結構,演算法才能誕生。反過來,演算法又是資料結構得以維持的乙個條件,沒有演算法,資料根本無法有規律的打交道,也就是說資料的間只會是雜亂無章地碰撞,這樣資料結構就會消滅。演算法是絕對運動的,資料結構是相對靜止的,二者是不可分割的關係。

資料結構和演算法不僅僅是計算機中才有的,計算機是後來誕生的東西,計算機的概念**於自然界,自然界中例如一棵樹的根和樹葉之間的資訊交流就是乙個演算法,是建立在根資料和樹葉資料之間可以相通的關係上的演算法,計算機只是自然界的乙個模擬,程式語言不是程式的乙個要素,因為自然界是沒有語言的,但是有程式,這是唯物主義的觀點。

演算法是活潑的,資料結構是遲鈍的,演算法的發展要求資料結構跟著發展,否則就會阻礙演算法的發展,演算法的發展或遲或早必然衝破資料結構的束縛,二者必然將建立在乙個新的起點繼續著矛盾運動,

資料結構是相對靜止的,演算法是絕對運動的,這二者首先表現為不可分割的關係。沒有一定組織關係的資料,演算法就無法產生,你不可能對一堆雜亂無章的資料編寫演算法,你要想對資料進行操作,必須能夠找到資料,這樣就必須將它們按照一定規律組織起來-----這個過程不一定是演算法,但是演算法可以實現這個過程,資料結構是演算法得以誕生的條件-----否則就是資料間的雜亂無章的運動,但是運動並不是演算法。反過來演算法是資料結構得以維持的條件,沒有了演算法對資料進行操作,資料就不會有規律地進行互動,資料結構也就隨之消滅。

客觀世界是物質的,物質是運動的,運動是有規律的,有規律的運動就是程式,客觀世界是存在程式的,所以不用擔心沒有演算法世界會怎麼樣,如果沒有規律的運動,就不會有人。

演算法的革命的、活潑的,資料結構是反動的、遲鈍的,演算法的發展必然推動資料結構的發展,簡單的資料結構不可能適應複雜的演算法,只有提供多種復合的資料結構才能為複雜的演算法提供新的空間,演算法的發展必然會衝破資料結構的束縛-----不過不要忘記了這種物的規律是由人來實現的。

5樓:碼寶寶呀

首先你要弄清楚資料結構是什麼?資料結構呢其實就是一種儲存資料之間的邏輯結構:比如我們學過的線性結構:

順序表啦,連結串列啦;層次結構:樹啦。合適的資料結構可以帶來更高的執行效率和儲存效率,與相應解決實際問題演算法的適應性也就越高,這也就是為什麼一些演算法指定了資料儲存必須以某種特定的資料結才行。

一般都是根據合適的資料結構來設計演算法,而不是根據演算法來設計資料結構。

演算法和資料結構往往是互不分開的。離開了演算法,資料結構就顯得毫無意義,而沒有了資料結構演算法就沒有實現的條件。良好的資料結構思想就是一種高效的演算法,但是資料結構不等於演算法。

只有當資料結構用於處理某個特定問題型別的時候,資料結構才會體現為演算法。要想細緻的了解,就要多看書,因為這東西畢竟發展了那麼多年,一兩句話是說不清楚的。想知道更多的資料結構與演算法知識嗎?

可以去了解一下小碼哥李明杰。

6樓:匿名使用者

演算法+資料結構=程式,資料結構,內容包括數陣列、連結串列、堆疊、佇列等。

乙個優秀的軟體開發師需要資料結構可以很高效的處理複雜的問題。 因為移動網際網路本身就決定了資料的重要程度。 所以資料結構演算法真的很重要, 尤其是搞大資料處理的時候。

資料結構與演算法它們可以相互區別也可以相互統一。資料結構是資料間的有機關係,演算法是對資料的操作步驟。

7樓:安徽新華電腦專修學院

資料結構是按照邏輯關係組織起來的一批資料,按期儲存結構把他儲存在計算機中,並在這些資料上定義乙個運算的集合。(簡單說就是先在稿紙上畫出這個資料怎麼組織起來,這是邏輯關係,然後在計算機中怎麼儲存,是按順序存,還是加個指標索引的存,這是儲存結構,最後還要定義一些運算,就是這個資料能完成那些操作)

資料結構學的到底是什麼,和演算法的關係

8樓:百度使用者

本人乃乙個資料痴迷

者,在計算機的道路上,也是乙個資料結構的痴迷者,現在大學裡面和同學搞開發也痴迷於資料庫,我就我個人的理解給你談一談:

首先,資料結構是一門計算機語言學的基礎學科,它不屬於任何一門語言,其體現的是幾乎所有標準語言的演算法的思想。

上面的概念有一些模糊,我們現在來具體說一說,相信你門的資料結構使用的是一門具體的語言比如c/c++語言來說明,那是為了輔助的學習資料結構,而資料結構本身不屬於任何語言(相信你把書上的程式敲到電腦裡面是不能通過的吧,其只是描述了過程,要除錯程式,還需要修改和增加一些東西)。你們的書上開始應該在講究資料的物理儲存結構/邏輯儲存結構等概念,說明資料結構首先就是「資料的結構」,在記憶體上的儲存方式,就是物理的儲存結構,在程式使用人員的思想上它是邏輯的,比如:

你們在c/c++中學習到連結串列,那麼連結串列是什麼乙個概念,你們使用指標制向下乙個結點的首位址,讓他們串聯起來,形成乙個接乙個的結點,就像顯示生活中的火車一樣。而這只是對於程式設計師的概念,但是在記憶體中儲存的方式是怎樣的那?對於你程式設計師來說這是「透明」的,其內部分配空間在那裡,都是隨機的,而記憶體中也沒有乙個又一根的線將他們串聯起來,所以,這是乙個物理與邏輯的概念,對於我們程式設計師只需要知道這些就可以了,而我們主要要研究的是「邏輯結構」。

我可以給你乙個我自己總結的乙個概念:所有的演算法必須基於資料結構生存。也就是說,我們對於任何演算法的編寫,必須依賴乙個已經存在的資料結構來對它進行操作,資料結構成為演算法的操作物件,這也是為什麼演算法和資料結構兩門分類不分家的概念,演算法在沒有資料結構的情況下,沒有任何存在的意義;而資料結構沒有演算法就等於是乙個屍體而沒有靈魂。

估計這個對於演算法的初學者可能有點暈,我們在具體的說一些東西吧:

我們在資料結構中最簡單的是什麼:我個人把書籍中線性表更加細化一層(這裡是為了便於理解在這樣說的):單個元素,比如:

int i;這個i就是乙個資料結構,它是乙個什麼樣的資料結構,就是乙個型別為int的變數,我們可以對它進行加法/減法/乘法/除法/自加等等一系列操作,當然對於單個元素我們對它的資料結構和演算法的研究沒有什麼意義,因為它本來就是原子的,某些具體運算上可能演算法存在比較小的差異;而提公升乙個層次:就是我們的線性表(一般包含有:順序表/連結串列)那麼我們研究這樣兩種資料結構主要就是要研究它的什麼東西那?

一般我們主要研究他們以結構為單位(就是結點)的增加/刪除/修改/檢索(查詢)四個操作(為什麼有這樣的操作,我在下面說到),我們一般把「增加/刪除/修改」都把它稱為更新,對於乙個結點,若要進行更新一類的操作比如:刪除,對於順序表來說是使用下標訪問方式,那麼我們在刪除了乙個元素後需要將這個元素後的所有元素後的所有元素全部向前移動,這個時間是對於越長的順序表,時間越長的,而對於連結串列,沒有順序的概念,其刪除元素只需要將前乙個結點的指標指向被刪除點的下乙個結點,將空間使用free()函式進行釋放,還原給作業系統。當執行檢索操作的時候,由於順序表直接使用下標進行隨機訪問,而連結串列需要從頭開始訪問一一匹配才可以得到使用的元素,這個時間也是和連結串列的結點個數成正比的。

所以我們每一種資料結構對於不同的演算法會產生不同的效果,各自沒有絕對的好,也沒有絕對的不好,他們都有自己的應用價值和方式;這樣我們就可以在實際的專案開發中,對於內部的演算法時間和空間以及專案所能提供的硬體能力進行綜合評估,以讓自己的演算法能夠更加好。

(在這裡只提到了基於資料結構的乙個方面就是:速度,其實演算法的要素還應該包括:穩定性、健壯性、正確性、有窮性、可理解性、有輸入和輸出等等)

為什麼要以結點方式進行這些亂七八糟的操作那?首先明確乙個概念就是:對於過程化程式語言所提供的都是一些基礎第一資訊,比如一些關鍵字/保留字/運算子/分界符。

而我們需要用程式解決現實生活中的問題,比如我們要程式記錄某公司人員的情況變化,那麼人員這個資料型別,在程式語言中是沒有的,那麼我們需要對人員的內部資訊定義(不可能完全,只是我們需要那些就定義那些),比如:年齡/性別/姓名/出生日期/民族/工作單位/職稱/職務/工資狀態等,那麼就可以用一些c/c++語言描述了,如年齡我們就可以進行如下定義:

int age;/*age變數,表示人員公司人員的年齡*/

同理進行其他的定義,我們用結構體或類把他們封裝成自定義資料型別或類的形式,這樣用他們定義的就是乙個人的物件的了,它內部包含了很多的模板資料了。

我就我個人的經歷估計的**量應該10000以內的(我個人的經理:只是建議,從你的第一行**開始算,不論程式正確與否,不論那一門語言,作為乙個標準程式設計師需要十萬行的**的功底(這個是我在大學二年級感覺有一定時候的大致資料,不一定適合其他人),而十萬行**功底一般需要四門基礎遠支撐,若老師沒有教,可以自學一些語言)。

什麼是資料結構和演算法,資料結構和演算法有什麼關係?資料結構就是演算法嗎?

程式 資料結構 演算法 資料結構是相互之間存在的一種或多種特定關係的資料元素的集合。包括4類基本的結構 集合 線形結構 樹形結構 圖狀或網狀結構。通俗點就是資料的邏輯結構,比方說這些資料在記憶體中以什麼樣的結構存放。演算法實際是程式設計過程中完成一件事採用的方法,比方說現實生活中做數學題時兩個人都將...

為了學習資料結構和演算法,有必要專門學習C嗎

學習資料結構和演算法,需要具備c語言或c 等基本的程式設計知識,尤其指標的概念。最好能學習一些離散數學的知識對計算機的工作原理有一定的認識,主要是堆疊和記憶體管理的一些知識。看資料結構和演算法的教材,用java實現資料結構,需要學習java。用c語言實現的,需要學習c語言。c語言沒有學好,怎麼學資料...

《資料結構和演算法分析》這本書剛開始的級數公式就看不懂怎麼辦

說實復話,除非你有很好制的數理基礎bai,不然不要輕易這樣轉,很du可能造zhi成學了半天什麼也沒學成,dao想做資料探勘的人很多,但是如果不是cs出身,就問問你自己能不能幾年堅持如一日的去學這玩意,能你就轉,不能就學點自己感興趣的吧!什麼是資料結構和演算法分析?在程式設計裡起到什麼作用?什麼是資料...