資料結構 時間複雜度

2022-01-10 00:00:34 字數 1682 閱讀 1758

目錄

遞迴程式

綜合例題

大o表示法:演算法的時間複雜度通常用大o符號表述,定義為t[n] = o(f(n))。稱函式t(n)以f(n)為界或者稱t(n)受限於f(n)。 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n)。t(n)稱為這一演算法的「時間複雜度」。當輸入量n逐漸加大時,時間複雜度的極限情形稱為演算法的「漸近時間複雜度」。

int i=1;

while(i<=n)

for(i=1; i<=n; i++)

for(j=1; j<=i; j++)

for(k=1; k<=j; k++)

x++;

基本步驟:a=?, b=?, f(n)=?,滿足主定理條件

f(n)的指數>(=)(<)\(log_ba\)若大於,則判斷cf(n)≥a(n/b),(c<1)

故時間複雜度為o(?)

//漢諾塔問題,假定move()的時間複雜度為o(1)

void hanoi(int n, char x, char y, char z) else

}

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

\[t(n)=

\begin

1& \text\\

2t(n/2)+n& \text

\end\]

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

求 t(n)=2t(n/4)+n^2的非遞迴解並證明。

某演算法的時間複雜度可用遞迴式

\[t(n)=

\begin

o(1)& \text\\

2t(n/2)+nlgn& \text

\end\]

表示,若用o表示該演算法的漸進時間複雜度的緊緻界,則時間複雜度為?

某演算法的時間複雜度可用遞推式

\[t(n)=

\begin

o(1)& \text\\

6t(n/5)+n& \text

\end\]

表示,則時間複雜度為?

某演算法的計算時間為:t(n) = 4t(n/2) + o(n),其中 t(1) = o(1),求其時間複雜

度,寫出具體過程。

設n=2^k,則t(n)=t(2^k)

令s(k)=t(2^k)

\[\begin

s(k) &= 4^ks(0)+o(2^k)+4o(2^)+...+4^o(2) \\

&= 4^ko(1)+2^k+2^+...+2^ \\

&= 4^k+4^k-2^k \\

&= o(n^2)

\end

\]

後面一大串其實是等比數列

資料結構 時間複雜度 空間複雜度

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

資料結構時間複雜度

如何衡量乙個演算法的複雜度?演算法的時間複雜度和空間複雜度統稱為演算法的複雜度 void test int n for int k 0 k 2 n k icount intcount 10 while count icount 這個函式執行次數為f n n n 2 n 10 時間複雜度實際就是乙個函...

資料結構 時間複雜度

一 演算法 是解決特定問題求解不走的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1.正確性 演算法的正確性是指演算法至少應該具有輸入 輸出和加工處理無歧義性 能正確反映問題的需求 能夠得島問題的正確答案。2.可讀性 演算法設計的另一目的是為了方便閱讀 理解和交流。3.健壯性...