資料結構 和 演算法 的概念
資料結構 的一些概念
資料:
程式的操作物件,用於描述客觀事物
- 可以輸入到計算機
- 可以被計算機程式處理
資料元素:
組成資料的基本單位
資料物件:
性質相同的資料元素的集合
資料項:
一個數據元素由若干資料項組成
如圖所示:
資料元素之間不是獨立的,存在特定的關係,這些關係即結構。
資料結構 指資料物件中資料元素之間的關係。
資料元素之間的 邏輯結構:
集合結構
資料元素之間沒有特別的關係,僅同屬相同集合
線性結構
資料元素之間是一對一的關係
樹形結構
資料元素之間存在一對多的層次關係
圖形結構
資料元素之間是多對多的關係
如圖所示:
資料元素的 物理儲存結構:
物理結構:
邏輯結構在計算機中的儲存形式。
順序儲存結構:
將資料儲存在地址連續的儲存單元裡。
鏈式儲存結構:
將資料儲存在任意的儲存單元裡,通過儲存地址的方式找到相關聯的資料元素。
如圖所示:
演算法的相關概念
資料結構只是靜態的描述了資料元素之間的關係。
高效的程式需要在資料結構的基礎上設計和選擇演算法。
演算法的定義:
演算法是特定問題求解步驟的描述
在計算機中表現為指令的有限序列
演算法是獨立語言而存在的一種解決問題的方法和思想。
對於演算法而言,語言並不重要,重要的是思想。
但是,對於程式開發而言,語言非常重要。
演算法的特性:
輸入:
演算法具有0個或多個輸入
輸出:
演算法至少有1個或多個輸出
有窮性:
演算法在有限的步驟之後會自動結束而不會無限迴圈
確定性:
演算法中的每一步都有確定的含義,不會出現二義性
可行性:
演算法的每一步都是可行的
演算法設計的準則:
正確性:
演算法對於合法資料必須能夠得到滿足要求的結果。
演算法必須能夠處理非法輸入,並得到合理的結果。
演算法儘量對於邊界資料和壓力資料都能得到滿足要求的結果,但是幾乎不能完全達到這點,極端的情況無法滿足。
注意:
正確性是演算法最需要滿足的基本的準則,但是作為計算機程式,不可能無限制的滿足這條準則。
可讀性:
演算法要方便閱讀,理解和交流
健壯性:
演算法不應該產生莫名其妙的結果
高性價比:
利用最少的時間和資源得到滿足要求的結果
注意:
演算法可讀性是最容易被忽視的,程式是寫給人看的,而不是計算機。
小結
演算法是為了解決實際問題而設計的
資料結構是演算法需要處理的問題載體
資料結構與演算法相輔相成
程式 = 資料結構 + 演算法