資料結構 緒論 基本概念

2021-10-10 02:44:50 字數 3160 閱讀 4343

一、資料結構的基本概念

1.資料:客觀事物的符號表示

2.資料元素:資料的基本單位

3.資料項:資料結構中討論的最小單元

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

5.資料的邏輯結構:

(1)線性結構

(2)非線性結構:樹 圖

6.資料的物理結構:

(1)順序儲存

(2)鏈式儲存

(3)索引儲存

(4)雜湊儲存

二、演算法的基本概念

1.演算法:由基本運算及規定的運算順序所構成的完整的解題步驟

2.演算法的特性:

(1)有窮性

(2)確定性

(3)輸入

(4)輸出

(5)可行性

3.演算法的設計目標

(1)正確性

(2)可讀性

(3)健壯性

(4)高效率與低儲存量需求

三、習題

1.下面說法錯誤的是()

(1)演算法原地工作的含義是指不需要任何額外的輔助空間

(2)在相同的規模n下,複雜度o(n)的演算法在時間上總是優於複雜度o(2

n2^n

2n)(3)所謂時間複雜度是指最壞情況下,估算演算法執行時間的乙個上屆

(4)同乙個演算法,實現語言的級別越高,執行效率就越低

a.(1) b.(1),(2) c.(1),(4) d.(3)

2.下述()與資料的儲存結構無關

a.棧 b.雙向鍊錶 c.雜湊表 d.線索樹 e.迴圈佇列

3.連續儲存設計時,儲存單元的位址()

a.一定連續 b.一定不連續 c.不一定連續 d.部分連續,部分不連續

4.以下屬於邏輯結構的是()

a.順序表 b.雜湊表 c.有序表 d.單鏈表

5.下面函式mergesort()執行的時間複雜度為多少?假設函式呼叫被寫為mergesort(1,n),merge()函式時間複雜度為o(n)

void mergegsort(int i, int j)

}

四、答案

c(1)乙個可執行程式除了需要記憶體空間來寄存本身的指令、常數、變數和輸入資料外,還需要額外空間,如果這個額外空間相當於問題的規模(輸入資料)來說是個常數,我們就稱之為原地工作。因此(1)不對。

(2)時間複雜度的大小,常用的比較關係:

o(1) ≤

\leq

≤ o( log

2n

log_2^n

log2n​

) ≤

\leq

≤ o(n) ≤

\leq

≤ o(n*log⁡2

n\log_2^n

log2n​

) ≤

\leq

≤ o( n

2n^2

n2) ≤

\leq

≤ o( n

3n^3

n3) ≤

\leq

≤… ≤

\leq

≤ o(n

kn^k

nk) ≤

\leq

≤ o(2

n2^n

2n)(3)對於o(1) 、 o( log

2n

log_2^n

log2n​

) 、 o(n)等,o的形式定義為:若f(n)是正數n的乙個函式,,則o(f(n))表示存在乙個正常數m,使得當n≥

\geq≥n0

n_0n0

​時|o(f(n))|≤

\leq

≤m*|f(n)|,也就是o(f(n))給出了函式f(n)的乙個上界

(4)這句話是嚴版資料結構上的原句,大多數情況下應該是這樣,但是不能說的這麼絕對,需要看編譯連線後最終的機器指令,這些指令操作的次數越少,說明該語言在某種編譯鏈結環境下效率越高。實際上即使同一種語言在不同的編譯環境下,也有可能不同

aa項 棧是邏輯結構

b項 雙向鍊錶是說明線性表是以鏈式結構儲存的

c項 雜湊是演算法,雜湊儲存方法本質上是順序儲存方法的擴充套件。雜湊表本質上是順序表的擴充套件

d項 線索樹是在鏈式儲存結構的基礎上對樹進行線索,與鏈式儲存結構有關

e項 迴圈佇列是建立在順序儲存結構上的

a順序儲存結構要開闢一片連續的儲存空間

c有序表指出了表中資料是根據一定邏輯順序排序的,是一種邏輯結構

顯然規模為n,基本操作在merge()函式中,merge()時間複雜度為o(n),因此merge()內基本操作次數可設為cn,mergesort()函式基本操作次數設為f(n),則有

f(n)=2f(n/2)+cn

=2

22^2

22f(n/4)+2cn

=2

32^3

23f(n/8)+3cn…=2

k2^k

2kf(n/(2

k2^k

2k))+kcn

由mergesort()函式可知,f(1)=o(1)

當n=2

k2^k

2k(k=log

2n

log_2^n

log2n​

)時 f(n)=o(1)n+cnlog

2n

log_2^n

log2n​

因此時間複雜度t(n)=o(n

l og

2n

log_2^n

log2n​)22

2^222

f(n/4)+2cn 到 2

32^3

23f(n/8)+3cn,完整的步驟應該是

2* 2* f(n/4)+cn*(1/2)+cn=2

22^2

22f(n/4)+2cn

因為進入mergesort(i,m)或者mergesort(m+1,j)函式後,merge()函式處理的序列變為原來的一半,因此基本操作次數變為原來的一半。對於本步,基本操作次數為cn*(1/2),以此類推,每次內層函式的基本操作次數是外層函式的一半。因此由本步推出下一步就應該是

(2

22^2

22) * (2*f(n/8) + cn * (1/4))+2cn=(2

32^3

23)f(n/8)+3cn

總結 資料結構(鄧俊輝) 緒論(基本概念)

1.演算法 是指基於特定的資料模型,旨在解決某一資訊處理問題而設計的乙個指令程式。必須包括以下要素 輸入與輸出 基本操作 確定性與可行性 有窮性與正確性 退化性和魯棒性 重用性 證明有窮性和正確性的關鍵是 找到整個演算法所具有的某種不變性和單調性。而這單調性,必然是具有單調遞減函式特性的。退化性和魯...

資料結構基本概念

是指相互之間具有 存在 一定聯絡 關係 的資料元素的集合。元素之間的相互聯絡 關係 稱為邏輯結構。資料元素之間的邏輯結構。元素之間的邏輯結構有四種基本型別 集合 結構中的資料元素除了 同屬於乙個集合 外,沒有其它關係。線性結構 結構中的資料元素之間存在一對一的關係。樹型結構 結構中的資料元素之間存在...

資料結構基本概念

資料結構基本概念 1 資料結構的研究物件 資料結構是一門討論 描述現實世界實體的數學模型 非數值計算 及其上的操作在計算機中如何表示和實現 的科學。資料結構的內容包括三個 層次 的五個 要素 層次 要素 資料表示 資料處理 抽象邏輯結構 基本運算 實現儲存結構 演算法評價 不同資料結構的比較計算法的...