本次資料結構複習重點複習了第一章緒論中關於時間複雜度的計算。一下簡要介紹一下複習結果:
乙個語句的頻度是指該語句在演算法中被重複執行的次數。演算法中所有語句的頻度之和記為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 (intn)
基本運算是
i = i * 2
設其執行次數為t,則2t≤n,即t≤log2n,因此複雜度t(n)=o(log2n)。
2.下列函式的時間複雜度為:
int func (intn)
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 對...