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

2021-03-10 19:22:37 字數 5352 閱讀 6077

1樓:匿名使用者

一、指代不同bai

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

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

內2、資料結構:指容

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

二、目的不同

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

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

三、特點不同

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

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

2樓:匿名使用者

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

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

3樓:涼念若櫻花妖嬈

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

演算法就是一個zhi

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

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

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

4樓:碼寶寶呀

演算法和資料結

bai構不是一個概念

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

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

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

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

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

5樓:匿名使用者

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

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

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

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

6樓:禮怡合從珊

佇列是先入先出,而堆疊是先進後出,這是不同點,相同點是兩者都是順序結構,

氣泡排序:將被排序的記錄陣列r[1..n]垂直排列,每個記錄r看作是重量為r.

key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描陣列r:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。

如此反覆進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。舉個例子吧!

比如我們要對一個包含了3個元素的陣列按照升序進行排序,我們首先將會把第三個元素的值與第二個元素的值進行比較,如果第三個元素的值小於第二個數的值,則交換這兩個元素的值,接下來,我們將第二個元素的值,再與第一個元素的值進行比較,同上面一樣,如果發現下面的元素的值小於上面元素的值,則交換這兩個值。

插入排序:

有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序法,插入排序的基本操作就是將一個資料插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料。

7樓:環逸希翠絲

佇列:一頭進一頭出

棧:先進先出,只能一頭出.

氣泡排序:從第一個開始比較,碰到小的交換.

插入排序:選定一個數字,然後依次比較,碰到比他大的就插在他後面.(應該對錶先排序)

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

8樓:河蟹蛇薈

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

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

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

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

學習演算法和資料結構有什麼用

9樓:du知道君

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

資料結構和資料型別的區別,資料結構和資料型別有什麼區別

具體概念講也不清楚,講一下分類吧 資料結構 線性表 線性連結串列 樹 圖 資料型別 整形 浮點型 字元型 布林型 如果不懂我繼續補充 當然不是的拉 如果想深入瞭解可以弄本程式設計書和本資料結構書看看 資料結構和資料型別有什麼區別 資料型別,復即資料元,制與資料結構的主要區別如下 一 性質不同 1 資...

資料結構和演算法不一樣嗎,演算法和資料結構有什麼區別??

不一樣。資料結構,無論複雜或簡單,只是資料。演算法是計算機可執行的數值計算方法,它加工資料,產出資料。資料是原料和製成品。演算法是工廠,是生產流水線。演算法和資料有關,但兩者不一樣。蛋糕廠同雞蛋,麵粉有關,但蛋糕廠不同於原料。這個肯定是不一樣,有區別的。資料是一切能輸入計算機中的資訊的總和,結構是指...

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

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