目錄
遞迴程式
綜合例題
大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.健壯性...