王道資料結構複習(一)

2022-05-27 02:15:12 字數 1236 閱讀 6855

本次資料結構複習重點複習了第一章緒論中關於時間複雜度的計算。一下簡要介紹一下複習結果:

乙個語句的頻度是指該語句在演算法中被重複執行的次數。演算法中所有語句的頻度之和記為t(n),它是該演算法問題規模n的函式,時間複雜度主要分析t(n)的數量級。演算法中的基本運算(最深層迴圈內的語句)的頻度與t(n)同數量級,因此通常採用演算法中基本運算的頻度ƒ(n)來分析演算法的時間複雜度。因此,演算法的時間複雜度記為:

t(n)=ο(ƒ(n))

式中,ο的含義時t(n)的數量級,其嚴格的數學定義是:若t(n)和ƒ(n)是定義在正整數集合上的兩個函式,則存在正常數c和n0 使得當n≥n0時,都滿足0≤t(n)≤cƒ(n)。

在分析乙個程式的時間複雜性時,有一下兩條規則:

a)加法規則: t(n)=t1(n)+t2(n)=ο(ƒ(n))+o(g(n)) = o(max(ƒ(n),g(n))

b)乘法規則:t(n)=t1(n)*t2(n)=o(ƒ(n))+o(g(n))=o(ƒ(n)*g(n))

常見的漸進時間複雜度為:

o(1)2n)2n)2)3)n)n)

以下是一些題目回顧:

1.求下述**的時間複雜度

void fun (int

n)

基本運算是

i = i * 2

設其執行次數為t,則2t≤n,即t≤log2n,因此複雜度t(n)=o(log2n)。

2.下列函式的時間複雜度為:

int func (int

n)

sum += ++i;

相當於

++i;

sum = sum + i;

進行到k次迴圈時,sum = (1+k)*k/2。需要o(n1/2)複雜度。

3.乙個演算法所需時間由下述遞迴方程表示,試求出該演算法時間複雜度級別:

t(n)=1 當n=1;

t(n)=2t(n/2)+n 當n>1;

式中,n是問題規模,為簡單起見,設n是2的整數次冪。

此題目可以使用主定理解決。當t(n)=at(n/b)+ƒ(n)時:1)ƒ(n)=o(nlogab-ε)  ε>0  t(n)=θ(nlogba)    2) ƒ(n)=θ(nlogba) 那麼 t(n)=θ(nlogbalog2n)     3)ƒ(n)=ω(nlogba+ε)且對c≤1有充分大的n有aƒ(n/b)≤cƒ(n)  t(n)=θ(ƒ(n))。

滿足主定理2),因此複雜度o(nlog2n).

資料結構複習一

一 名詞術語 資料 描述客觀事物的數字,字元以及一切能夠輸入到計算機中,並且能夠被電腦程式處理的符號的集合。資料元素 資料這個集合中的乙個個的元素,乙個資料元素可以包含乙個或若干個資料項。資料物件 具有相同特性的資料元素的集合。結構 資料元素之間具有的關係。資料結構 就是具有結構的資料元素的集合。二...

資料結構複習(一)

資料結構的物理結構主要分為兩種 1 順序儲存結構 2 鏈式儲存結構 1 順序儲存結構 順序儲存結構 是把資料元素存放在位址連續的儲存單元中,其資料的邏輯關係和物理關係一致,即邏輯上的前驅後繼關係對應儲存結構也是前驅後繼關係 我們在之前的c語言課程中,陣列就是順序儲存結構。2 鏈式儲存結構 指標 鏈式...

資料結構複習(一)

一 單項選擇題 1.資料的四種基本邏輯結構是指。a.鍊錶 陣列 串 圖狀結構 b.線性表 鍊錶 棧佇列 陣列 c.線性結構 鍊錶 樹形結構 圖形結構 d.集合 線性結構 樹形結構 圖狀結構 2 評價演算法的時間複雜性,比較 對數階量級 與 線性階量級 則有。a 對數階量級複雜性大於線性階量級 b 對...