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

2021-07-12 17:39:51 字數 5032 閱讀 1568

1樓:

程式=資料結構+演算法

資料結構是相互之間存在的一種或多種特定關係的資料元素的集合。包括4類基本的結構:集合、線形結構、樹形結構、圖狀或網狀結構。

通俗點就是資料的邏輯結構,比方說這些資料在記憶體中以什麼樣的結構存放。

演算法實際是程式設計過程中完成一件事採用的方法,比方說現實生活中做數學題時兩個人都將題完成但是他們之間有一個用的時間很短就是因為採用了簡便的方法。同樣在程式設計過程中採用好的演算法可以降低程式的時空複雜度

2樓:匿名使用者

是一種思想了,去找本書來看看就明白

演算法和資料結構有什麼區別??

3樓:匿名使用者

一、指代不同bai

1、演算法:是du指解題方****zhi

而完整的描述,是一系列dao解決問題的清晰指令。

內2、資料結構:指容

相互之間存在一種或多種特定關係的資料元素的集合。

二、目的不同

1、演算法:指令描述的是一個計算,當其執行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。

2、資料結構:研究的是資料的邏輯結構和資料的物理結構之間的相互關係,並對這種結構定義相適應的運算,設計出相應的演算法,並確保經過這些運算以後所得到的新結構仍保持原來的結構型別。

三、特點不同

1、演算法:演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步驟,即每個計算步驟都可以在有限時間內完成。

2、資料結構:核心技術是分解與抽象。通過分解可以劃分出資料的3個層次;再通過抽象,捨棄資料元素的具體內容,就得到邏輯結構。

4樓:匿名使用者

資料結構是演算法實現的基礎,演算法總是要依賴於某種資料結構來實現的。往往是版在發展一種演算法權的時候,構建了適合於這種演算法的資料結構。一種資料結構如果脫離了演算法,那還有什麼用呢?

實際上也不存在一本書單純的講資料結構,或者單純的講演算法。當然兩者也是有一定區別的,演算法更加的抽象一些,側重於對問題的建模,而資料結構則是具體實現方面的問題了,兩者是相輔相成的。

5樓:涼念若櫻花妖嬈

其實兩者bai可以說關聯不du大。

演算法就是一個zhi

處理的方法,比如大學dao裡基礎的排序演算法,回就是為了完成對一組資料排答序。查詢演算法,就是為了在一個集合中查詢需要的項。除此之外,還有很多演算法,比方說,加密、壓縮、影象處理。

而資料結構就是資料的結構。比方說佇列、堆、棧、連結串列、樹等。

大學裡的《演算法與資料結構》這門課是個入門的演算法課和資料結構課程。教授針對不同的資料結構進行的排序、查詢、遍歷的不同演算法。僅是演算法基礎,就像大學裡都是以c語言作為入門語言一樣的。

6樓:碼寶寶呀

演算法和資料結

bai構不是一個概念

du,數zhi據結構+演算法=程式。dao

演算法是解題的步內驟,是指令的有限序列容。它們規定了解決某一特定型別問題的一系列運算,是對解題方****與完整的描述。制定一個演算法,一般要經過設計、確認、分析、編碼、測試、除錯和計時等階段。

資料結構是指相互之間存在著一種或者多種關係的資料元素的集合。在任何問題中,資料元素之間總是存在聯絡的。把某一資料物件及該資料物件中所有資料成員之間的關係組成的實體叫做資料結構,資料結構分為四種基本結構,集合結構,線性結構,樹形結構圖形結構四種。

以上就是資料結構與演算法的區別,詳細的你可以去小碼哥李明傑瞭解一下。

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

7樓:天涯虧科

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

8樓:_了卻了

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

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

9樓:匿名使用者

資料結構是資料間的有機

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

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

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

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

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

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

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

10樓:碼寶寶呀

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

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

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

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

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

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

11樓:匿名使用者

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

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

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

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

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

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

13樓:河蟹蛇薈

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

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

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

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

資料結構和演算法先學哪個比較好,請問資料結構和演算法二者之間究竟是什麼關係?應該先學哪一個?

先資料結構,後演算法。因為演算法設計要求儘可能提高時空效率,而這就要通過資料結構來實現,所以兩者有先後之分 一般大學可能會同時學,我建議先資料結構再演算法,資料結構相比較演算法來說其實簡單一點,而且演算法是需要一定資料結構支援的 演算法是解決bai問題的方法,du解決一種問題可以有很多zhi方法 d...

怎麼學好資料結構與演算法好難啊資料結構該怎麼學好啊,很難得樣子

先學好語言,這是學習的基礎。有些演算法書上在學習語言部分會有一點演算法包含在內,比如遞迴。要學演算法,先練好遞迴,這會對你深入學習其他演算法有很大的幫助。樹形結構是資料結構中較難的部分,也是資料結構的基礎,主要靠練。還有就是,不要總是學習理論,合上書本認真地把演算法用 和實現是最重要的。不要背 沒用...

資料結構試題求解,資料結構試題 求答案

1 b 刪第一個結點,時間複雜度分別為o 1 和o n 兩個連結串列用相同型別變數,佔相同大專小空間屬 2 c 第h層和第h 1層都有可能有葉子結點 第h 1層有可能存在度為1的結點 3 a 參照b樹的插入演算法 4 c q是p的前驅結點 5 b 6 c 7 d tail a d,e,f head ...