1. 程式人生 > >資料結構 和 演算法 的概念

資料結構 和 演算法 的概念

資料結構 的一些概念

資料:
程式的操作物件,用於描述客觀事物

  • 可以輸入到計算機
  • 可以被計算機程式處理

資料元素:
組成資料的基本單位

資料物件:
性質相同的資料元素的集合

資料項:
一個數據元素由若干資料項組成

如圖所示:
這裡寫圖片描述

這裡寫圖片描述

資料元素之間不是獨立的,存在特定的關係,這些關係即結構。

資料結構 指資料物件中資料元素之間的關係。

資料元素之間的 邏輯結構:
集合結構
資料元素之間沒有特別的關係,僅同屬相同集合

線性結構
資料元素之間是一對一的關係

樹形結構
資料元素之間存在一對多的層次關係

圖形結構
資料元素之間是多對多的關係

如圖所示:
這裡寫圖片描述

資料元素的 物理儲存結構:

物理結構:
邏輯結構在計算機中的儲存形式。

順序儲存結構
將資料儲存在地址連續的儲存單元裡。

鏈式儲存結構
將資料儲存在任意的儲存單元裡,通過儲存地址的方式找到相關聯的資料元素。

如圖所示:
這裡寫圖片描述

演算法的相關概念

資料結構只是靜態的描述了資料元素之間的關係。
高效的程式需要在資料結構的基礎上設計和選擇演算法。

這裡寫圖片描述

演算法的定義:
演算法是特定問題求解步驟的描述
在計算機中表現為指令的有限序列

演算法是獨立語言而存在的一種解決問題的方法和思想。
對於演算法而言,語言並不重要,重要的是思想。
但是,對於程式開發而言,語言非常重要。

演算法的特性:
輸入
演算法具有0個或多個輸入
輸出
演算法至少有1個或多個輸出
有窮性
演算法在有限的步驟之後會自動結束而不會無限迴圈
確定性
演算法中的每一步都有確定的含義,不會出現二義性
可行性
演算法的每一步都是可行的

演算法設計的準則:
正確性:
演算法對於合法資料必須能夠得到滿足要求的結果。
演算法必須能夠處理非法輸入,並得到合理的結果。

演算法儘量對於邊界資料和壓力資料都能得到滿足要求的結果,但是幾乎不能完全達到這點,極端的情況無法滿足。

注意:
正確性是演算法最需要滿足的基本的準則,但是作為計算機程式,不可能無限制的滿足這條準則。

可讀性:


演算法要方便閱讀,理解和交流

健壯性:
演算法不應該產生莫名其妙的結果

高性價比:
利用最少的時間和資源得到滿足要求的結果

注意:
演算法可讀性是最容易被忽視的,程式是寫給人看的,而不是計算機。

小結

演算法是為了解決實際問題而設計的
資料結構是演算法需要處理的問題載體
資料結構與演算法相輔相成

程式 = 資料結構 + 演算法