資料結構與演算法 一 緒論

2021-10-18 02:33:31 字數 1320 閱讀 7759

目錄

什麼是資料結構

邏輯結構:

物理結構: 演算法

演算法的五個基本特徵

演算法設計的要求

簡單來說,程式 = 資料結構 + 演算法

傳統上,我們把資料結構分成邏輯結構和物理結構。

邏輯結構:是指資料物件中資料元素之間的互相關係,也是我們今後最需要關注和討論的問題。

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

集合結構:內部出了同屬乙個集合外,沒有其他關係。

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

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

圖形結構:圖形結構的資料元素是多對多的關係。

資料元素的儲存形式結構有兩種:順序儲存鏈式儲存。

順序儲存結構:是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的。

例如我們程式語言的陣列結構就是典型的順序儲存結構。

鏈式儲存結構:從順序儲存結構我們想到了日常生活中的排隊,但現實生活中,我們發現不是完全如此。

例如排隊時,有人被迫離開隊伍去上洗手間,還有人不遵守基本道德規範插隊,這些情況會破壞儲存結構的基本原則。

面對這樣時常要變化的結構,順序儲存結構是不安全的,所以引出鏈式儲存結構。

例如現在的銀行、醫院叫號系統,排隊時無論你在**,只需要關注你的"號" 有沒有被叫到。鏈式儲存結構就是這樣的原理,

把資料元素存放在 任意 的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。很顯然,這樣說的話鏈式儲存結構的資料元素

儲存關係不能反映邏輯關係,因此需要用乙個 指標 存放資料元素的位址,這樣子通過位址就可以找到關聯資料元素的位置。

首先我們可以設計乙個 1-100求和的演算法
int i,sum=0,n=100;   //執行1次

for(i=1;i<=n;i++) //執行 n+1 次

printf("%d",sum);

對比下,我們用高斯先生的演算法

int i,sum=0,n=100;    //執行一次

sum= (i+n)*n/2; //執行一次

printf("%d",sum);

-演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個 或 多個操作。

輸入、輸出、有窮性、確定性 和 可行性。

資料結構與演算法(一) 緒論

什麼是資料結構?資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的科學。程式設計 資料結構 演算法 傳統上,資料結構分為邏輯結構和物理結構。邏輯結構 是指資料物件中資料元素之間的相互關係。物理結構 是指資料的邏輯結構在計算機中的儲存形式。四大邏輯結構 1.集...

資料結構與演算法(緒論)

作為乙個準程式設計師,在讀本科的時候,就一直被老師不停的灌輸資料機構與演算法的重要性,但是好像我們從來就沒遇到過真正棘手的需要通過資料結構去解決的問題,可能唯一再聽到它的時候就是找工作實習的時候會被面試官提問,因此我們似乎覺得資料結構沒那麼重要,而且又因為各種程式語言,尤其是python,各種內建的...

資料結構與演算法 緒論

一般法則 法則1 for迴圈 乙個for迴圈的執行時間至多是該for迴圈內部那些語句的執行時間乘以迭代的次數。法則2 巢狀的for迴圈 從裡向外分析這些迴圈。在一組巢狀迴圈內部的一些語句總的執行時間為該語句的執行時間乘以該組所有的for迴圈的大小的乘積 例如,下列程式片斷為o n2 for i 0 ...