更新時間:2021-06-22 12:37:37 來源:動力節點 瀏覽1096次
在計算機科學中,數據結構(Data Structure)是計算機中存儲、組織數據的方式。為什么數據結構和算法經常放在一起討論?算法用來設計一種使用計算機來解決問題的方法。設計高效的算法又是怎么來實現的?在我們學習了計算機編程后,也要學習數據結構與算法這些基礎內容。
我們經常會聽到有人說起:程序 = 數據結構 + 算法,當我們遇到一個問題,或有一個需求時,在設計程序來解決問題時,其中重要一步就是設計數據結構,數據結構在問題解決中主要用來:
存放要處理的數據
實現算法策略
數據結構可以用一個四元組來表示:
DataStructure = (D, L, S, O)
它包括數據元素(D)、數據元素之間的邏輯關系(L)、邏輯關系在計算機中的存儲結構(S)和所規定的操作(O)這四部分。
計算機中數據的相關術語:
數據(Data):所有能夠被計算機識別的符號集合。
數據元素(Data Element):數據集合中的一個“個體”,是數據結構中討論的基本單位。
數據項(Data Item):是數據結構中討論的最小單位,數據元素是數據項的集合。
數據對象(Data Object):具有相同性質的數據元素的集合。
(1)邏輯結構
邏輯結構是指數據元素之間客觀存在的關系,和數據在計算機中怎么存儲無關,主要用于人們理解和交流以及指導算法的設計。邏輯結構分為四類:
線性結構:數據元素之間存在一對一的關系
樹形結構:數據元素之間存在一對多的關系
圖形結構:數據元素之間存在多對多的關系
集合結構:數據元素屬于同一個集合
學習研究了這四種邏輯關系是如何存儲與操作后,以后我們要解決任何問題,只要分析出我們要解決問題的數據關系,都可以通過這四種邏輯關系來思考,如果關系比較復雜,也是由這四種關系組成的,只要一層一層地分析就可以了。
(2)存儲結構
邏輯結構主要用于算法設計,而存儲結構用于指導算法編程實現。存儲結構有基本的兩種結構:
順序存儲:邏輯上相鄰的元素存儲在物理位置相鄰的存儲單元中
鏈式存儲:在數據元素中添加一些地址域或輔助結構,用于存放數據元素之間的關系
順序存儲結構在內存中的地址是連續的,所以存取速度很快,但是在插入或刪除操作效率低。鏈式存儲結構在內存中地址可以是不連續的,插入和刪除操作效率高,但查找和遍歷效率低。同樣的邏輯結構(線性、樹形、圖形、集合)既可以采用順序存儲結構也可以采用鏈式存儲結構來存儲數據和關系。存儲結構的選擇主要考慮算法的效率,算法的時間和空間哪個更好,具體選擇哪種和需求有關,基本存儲結構既可以單獨使用,也可以組合使用。
(3)運算操作
數據結構中的操作主要是指數據元素的查找、插入、刪除、遍歷和排序等等。
算法用來設計并實現一種用計算機來解決問題的方法。它滿足下列性質:
輸入:有零個或多個輸入量
輸出:產生至少一個輸出量
確定性:算法的指令清晰、無歧義
有限性:算法的指令執行次數有限,執行時間有限
我們在使用計算機解決產問題的過程可以分為下面五個步驟:
問題的理解:搞清楚問題的輸入、要求和輸出。
數據結構設計:設計能處理問題中數據的數據結構,還要設計能支持算法策略的數據結構。
算法設計:選擇算法策略,用適當的方式描述和逐步細化算法步驟。
算法分析:發現有優化的地方,返回第二步,重新設計數據結構和算法
程序實現:用計算機編程,定義數據結構,編寫代碼實現,并高度和運行。
一個需求問題有多種解決方案,我們經常需要通過不斷嘗試和積累經驗才能找到最好的方案,如果我們熟練掌握了基本的數據結構和算法,對于在設計高效算法中是有很大幫助的,能更高效地解決需求問題。
以上就是動力節點小編介紹的"數據結構算法是什么",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習