什麼是數據結構?什麼是算法

記得是大一大二的時候學習了數據結構。時間過的好快,現在實現了,現在感覺自己的基礎好差很多都不會。欠的帳還是要還的!

什麼是數據結構?什麼是算法?

呃呃呃呃 哎….不會。

多次參加了MOOC姥姥的數據結構,都沒有堅持下來,希望這次可以堅持下來。

引用姥姥的例子:如果給你一堆書你會怎麼放?

想怎麼放就怎麼放,哈哈。

如果書不多,我們一般是一本插着一本的放着。如下圖

要是書的規模很大呢?如學校圖書館裏面的書如果是按上述一本一本的插入,那麼以後需要找書的時候是不是累死人了。如下圖

所以答案是看書的規模。


什麼是數據結構?

數據是什麼?結構是什麼?

參考大話數據結構,幾個術語的定義

數據:是描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,並輸入給計算機處理的符號集合

其實就是圖書館中所有的書。

數據元素:是組成數據的、有一定意義的基本單位,在計算機中通常作爲整體處理。也被稱爲記錄。

就是書。

數據項:一個數據元素可以由若干個數據項組成。

其實就是書名、作者、出版社啥的….

class Book {
//書名
private String bookName;
//作者
private String bookAuthor;
//出版社
private String bookPress;
}

其實一個Book對象就是數據元素,bookName、bookAuthor、bookPress就是數據項。

數據對象:是性質相同的數據元素的集合,是數據的子集。

其實就是某一類書。如圖下圖都是數據結構一類的書

是不是明白了什麼是數據?哈哈 還是需要結合例子理解的深入啊。

什麼是結構?

邏輯結構、物理結構。

邏輯結構:是指數據對象中數據元素之間的相互關係。包括集合結構、線性結構、樹形結構、圖形結構。

集合結構:集合結構中的數據元素除了同屬於一個集合外,它們之間沒有其它關係。

線性結構:線性結構中的數據之間是一對一的關係。

樹形結構:樹形結構中的數據之間存在一種一對多的層次關係。

圖形結構:圖形結構的數據元素是多對多的關係。


物理結構:是指數據的邏輯結構在計算機中的存儲形式。順序存儲和鏈式存儲。

順序存儲:是把數據元素存放在地址連續的存儲單元裏。

鏈式存儲:是把數據元素存放在任意的存儲單元裏,這組存儲單元可以是連續的,也可以是不連續的。


什麼是數據結構?

Sartaj Sahni在他的《數據結構、算法與應用》一書中稱:“數據結構是數據對象,以及存在於該對象的實例合組成實例的數據元素之間的各種聯繫。這些聯繫可以通過定義相關的函數來給出。”他將數據對象(data object)定義爲“一個數據對象是實例或值的集合”。

Clifford A.Shaffer在《數據結構與算法分析》一書中的定義是:“數據結構是 ADT(抽象數據類型Abstract Data Type) 的物理實現。”

大話數據結構:數據結構是相互之間存在一種或多種特定關係的數據元素的集合。

姥姥:數據結構包括數據對象集以及它們在計算機中的組織方式,即它們的邏輯結構和物理存儲結構,同時還包括與數據對象集相關的操作集,以及實現這些操作的最高效的算法。

個人:就是把圖書館中的書轉化爲一些字符數據存入電腦中,以及對這些數據對象集的操作。如找書,擺放放書等。


什麼是算法?

還是圖書館的例子,如果一本一本找累死人,要是有個索引,先找哪一類這樣會快很多。如何查找其實就是算法。

算法是解決問題步驟的有限集合,通常用某一種計算機語言進行僞碼描述。通常用時間複雜度和空間複雜度來衡量算法的優劣。

算法的五大特徵:輸入、輸出、有窮性、確定性、可行性。

輸入:零個或多個輸入。

輸出:一個或多個輸出。

有窮性:有限步驟後在可接受時間內完成。

確定性:每個步驟都有確定含義,無二義性。

可行性:每一步都是可行的。

算法設計要求:正確性、可讀性、健壯性、時間效率高和存儲低。

正確性:有輸入輸出,無二義性,有正確答案。

可讀性:方便閱讀。

健壯性:輸入不合法能處理

時間效率高和存儲低:時間空間複雜度越低越好。


這就是數據結構和算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章