數據結構與演算法系列1 什麼是數據結構和演算法
數據結構系列1
啥是數據結構?
數據結構是電腦存儲,組織數據的方式,就是怎麼存儲數據的意思
啥是數據
數據:是描述客觀事物的符號,是電腦中可以操作的對象,是能被電腦識別,並給電腦處理的符號集合
數據元素:是組成數據的,有一定意義的基本單位,在電腦中通常作為整體處理,也被稱為記錄
數據項:一個數據元素可以由若干數據項的組成
數據對象:是性質相同的數據元素的集合,是數據的子集
啥是結構
邏輯結構,物理結構
**
邏輯結構:是指數據對象中數據元素之間的相互關係,包括集合結構,線性結構,圖形結構
**
集合結構:集合結構中的數據元素除了同屬一個集合外,他們之間沒有其他關係
線性結構:線性結構中的數據之間是一對一的關係
圖形結構:圖形結構的數據元素是多對多的關係
樹形結構:樹形結構中的數據之間是一對多的層次關係
物理結構:是指數據的邏輯結構在電腦中的存儲形式。順序存儲和鏈式存儲。
順序存儲:是把數據元素存放在地址連續的存儲單元里。
鏈式存儲:是把數據元素存放在任意的存儲單元里,這組存儲單元可以是連續的,也可以是不連續的。
各位大佬對數據結構的見解
Sartaj Sahni在他的《數據結構、演算法與應用》一書中稱:「數據結構是數據對象,以及存在於該對象的實例合組成實例的數據元素之間的各種聯繫。這些聯繫可以通過定義相關的函數來給出。」他將數據對象(data object)定義為「一個數據對象是實例或值的集合」。
Clifford A.Shaffer在《數據結構與演算法分析》一書中的定義是:「數據結構是 ADT(抽象數據類型Abstract Data Type) 的物理實現。」
大話數據結構:數據結構是相互之間存在一種或多種特定關係的數據元素的集合。
個人:數據結構包括數據對象集以及它們在電腦中的組織方式,即它們的邏輯結構和物理存儲結構,同時還包括與數據對象集相關的操作集,以及實現這些操作的最高效的演算法。拿我們生活中的圖書館藏書舉例,就是把圖書館中的書轉化為一些字元數據存入電腦中,以及對這些數據對象集的操作。如找書,擺放放書等。
什麼是演算法?
還是圖書館的例子,如果一本一本找累死人,要是有個索引,先找哪一類這樣會快很多。如何查找其實就是演算法。
演算法是解決問題步驟的有限集合,通常用某一種電腦語言進行偽碼描述。通常用時間複雜度和空間複雜度來衡量演算法的優劣。
演算法的五大特徵:輸入、輸出、有窮性、確定性、可行性。
輸入:零個或多個輸入。
輸出:一個或多個輸出。
有窮性:有限步驟後在可接受時間內完成。
確定性:每個步驟都有確定含義,無二義性。
可行性:每一步都是可行的。
演算法設計要求:正確性、可讀性、健壯性、時間效率高和存儲低。
正確性:有輸入輸出,無二義性,有正確答案。
可讀性:方便閱讀。
健壯性:輸入不合法能處理
時間效率高和存儲低:時間空間複雜度越低越好。