什麼是資料結構?
資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的科學。
程式設計 = 資料結構 + 演算法
傳統上,資料結構分為邏輯結構和物理結構。
邏輯結構:是指資料物件中資料元素之間的相互關係。
物理結構:是指資料的邏輯結構在計算機中的儲存形式。
四大邏輯結構:
1.集合結構 集合中的資料元素除了同屬於乙個集合外,它們之間不在有其他關係;
2.線性結構 結構中的元素是一對一的關係;
3.樹形結構 結構中的元素之間存在一種一對多的關係,金字塔關係;
4.圖形結構 結構中的元素是多對多的關係。
物理結構:
實際上就是考慮資料元素如何儲存到計算機的儲存器中。
資料元素的儲存方式有兩種:順序儲存和鏈式儲存。
鏈式儲存結構:面對時常變化的資料儲存,順序儲存不適合了。鏈式儲存是把資料元素存放在任意的單元儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。很顯然,鏈式儲存的資料元素儲存關係不能反映其邏輯關係,因此需要用乙個指標存放資料元素的位址,這樣通過位址就可以找到相關聯的資料元素位置。
資料結構和演算法的關係?
為什麼要引入演算法這個概念了,先來看個簡單的程式,求1+2+3+…+100 =
兩種設計思路
1.int i,sum = 0,n = 100;
for(i = 1;i<=n;i++)
sum +=i;
printf("%d",sum);
2.int i,sum = 0,n = 100;
sum = (1+n)*n/2;
printf("%d",sum);
對比一下,就可以看出,方法一要迴圈100次,方法二只需要執行一次。
由此可見演算法解決了時間、解決了空間。
演算法:是解決特定問題求解步驟的描述,在計算機中表現為指令的有序序列,並且每條指令表示一或多個操作。
演算法的5個特徵:
輸入、輸出、有窮性、確定性和可行性。
輸入:0個或多個輸入;
輸出:至少有乙個或多個輸出,輸出形式可以是列印輸出,也可以是返回乙個值或多個值;
有窮性:指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。
確定性:演算法每乙個步驟都具有確定的含義,不會出現二義性。演算法的每個步驟都應該被精確定義而無異議。
可行性:演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成。
演算法設計的要求:
1.正確性
是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。
*演算法程式沒有語法錯誤;
*演算法程式對於輸入合法的輸入能產生滿足要求的輸出;
*演算法程式對於非法輸入能夠產生滿足規格的說明,如提示資訊;
*演算法程式對於故意刁難的測試輸入都有滿足要求的輸出結果。
2.可讀性
演算法設計應便於閱讀、理解和交流。
3.健壯性
當輸入資料不合法時,演算法也能做出相關處理,而不是產生異常、崩潰或莫名其妙的結果。
4.時間效率高和儲存量低
資料結構與演算法 一 緒論
目錄 什麼是資料結構 邏輯結構 物理結構 演算法 演算法的五個基本特徵 演算法設計的要求 簡單來說,程式 資料結構 演算法 傳統上,我們把資料結構分成邏輯結構和物理結構。邏輯結構 是指資料物件中資料元素之間的互相關係,也是我們今後最需要關注和討論的問題。物理結構 是指資料的邏輯結構在計算機中的儲存形...
資料結構與演算法(緒論)
作為乙個準程式設計師,在讀本科的時候,就一直被老師不停的灌輸資料機構與演算法的重要性,但是好像我們從來就沒遇到過真正棘手的需要通過資料結構去解決的問題,可能唯一再聽到它的時候就是找工作實習的時候會被面試官提問,因此我們似乎覺得資料結構沒那麼重要,而且又因為各種程式語言,尤其是python,各種內建的...
資料結構與演算法 緒論
一般法則 法則1 for迴圈 乙個for迴圈的執行時間至多是該for迴圈內部那些語句的執行時間乘以迭代的次數。法則2 巢狀的for迴圈 從裡向外分析這些迴圈。在一組巢狀迴圈內部的一些語句總的執行時間為該語句的執行時間乘以該組所有的for迴圈的大小的乘積 例如,下列程式片斷為o n2 for i 0 ...