什么是資料結構
簡單來說,程式=資料結構+演算法,
傳統上,我們把資料結構分為邏輯結構和物理結構,
邏輯結構:是指資料物件中資料元素之間的互相關系,也是我們今后最需要關注和討論的問題,
物理結構:是指資料的邏輯結構在計算機中的存盤形式,
邏輯結構:
- 集合結構:集合結構內部元素除了屬同一集合外沒有任何邏輯關系
- 線性結構:線性結構是指資料元素之間存在“一對一”的線性關系的資料結構
- 樹狀結構:樹狀結構是一個或多個節點的有限集合
- 圖形結構:圖形結構的資料元素是多對多的關系
物理結構:
資料元素的儲存形式結構有兩種:順序存盤和鏈式存盤
- 順序存盤結構:是把資料元素存放在地址連續的存盤單元里的,其資料間的邏輯關系和物理關系是一致的
- 鏈式存盤結構:是把資料元素存放在任意的存盤單元里,這組存盤單元可以是連續的,也可以是不連續的
鏈式存盤結構的資料元素存盤關系不能反映邏輯關系,因此需要用一個指標存放資料元素的地址,這樣子通過地址就可以找到關聯資料元素的位置
談談演算法
首先我們可以設計一個1-100求和的演算法:
int i,sum=0,n=100; for(i=1;i<=n;i++) { sum=sum+i; //需要運行100次 } printf("%d",sum);
然后我們用高斯先生的演算法:
int i,sum=0,n=100; sum=(i+n)*n/2; //只需運行1次 printf("%d",sum);
很明顯,我們傳統的演算法,需要迭代100次,而高斯的演算法,只需要一次,雖然計算機的速度很快,但是隨著條件的增大,兩者的差距就會體現出來,
那么什么是演算法呢?
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,并且每條指令表示一個或者多個操作
演算法的五個基本特征
輸入、輸出、有窮性、確定性和可行性
輸入:演算法具有零個或多個輸入
輸出:演算法至少有一個或者多個輸出
有窮性:指演算法在執行有限的步驟之后,自動結束而不會出現無限回圈,并且每一個步驟在可接受的 時間內完成
確定性:演算法的沒一個步驟都具有確定的含義,不會出現二義性
可行性:演算法的每一步都必須四可行的,每一步都能執行有限次數完成
演算法設計的要求
-
正確性:演算法的正確性是指演算法至少因該具有輸入、輸出和加工處理的無歧義性、 能正確反映問題的需求、能夠得到問題的正確答案
- 演算法程式沒有語法錯誤
- 演算法程式對于合法輸入能夠產生滿足要求的輸出
- 演算法程式對于非法輸入能夠產生滿足規格的說明
- 演算法程式對于故意刁難的測驗輸入都有滿足要求的輸出結果
- 可讀性:演算法設計另一目的是為了便于閱讀、理解和交流
- 健壯性:當輸入資料不合法時,演算法也能做出相關處理,而不是產生例外、崩潰或莫名其妙的結果
- 時間效率高和存盤量低:盡量高、盡量低
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62068.html
標籤:其他
上一篇:8-斐波那契數列
下一篇:資料結構-冒泡排序法
