判斷乙個演算法的效率時,一般忽略掉函式中的常數和次要項,主要關注最高端的階數。
演算法的時間複雜度即演算法的時間量度,記作:t(n)=o(f(n))。它表示隨問題規模的 n 的擴大,演算法執行時間的增長率和 f(n) 的增長率相同,叫做演算法的漸進時間複雜度。其中 f(n) 是問題規模 n 的某個函式。不論執行的常數次為多少,o(3)也好,o(100)也罷,時間複雜度都記作o(1)。
o(n),關鍵是要分析迴圈結構的運**況。
int
count=1;
while (count
count=count*2;
}
這裡假設迴圈執行 x 次,那麼判斷條件就變成了co
unt∗
2x=n
,可以得到x=
log2
n 。所以這個迴圈的時間複雜度為o(
log(
n)) 。
一般有迴圈巢狀。迴圈複雜度等於迴圈體的複雜度乘以該迴圈執行的次數。
int i,j;
for (i=0;i
i++)
當i=0時,迴圈體執行n次;
當i=1時,迴圈體執行n-1次;
當i=2時,迴圈體執行n-2次;
···
當i=n-1時,迴圈體執行1次。
所以,總共執行n+(n-1)+(n-2)+···+1=n*(n+1)/2。此迴圈體時間複雜度為o(
n∗(n
+1)/
2)=o
(n2)
執行次函式
階非正式術語12o
(1) 常數階
2n+3o(
n)線性階3n
2+2n
+1o(
n2) 平方階5l
ogn2
+20o(
logn
) 對數階2n
+3nl
og2n
+19o(
nlog
n)nl
ogn 階6n
3+2n
2+3n
+4o(
n3) 立方階2n
o(2n
) 指數階
o(
1)logn
)n)nlog
n)n2
)n3)2n
)n!)nn
)
演算法時間複雜度計算方法
一 概念 時間複雜度是總運算次數表示式中受n的變化影響最大的那一項 不含係數 比如 一般總運算次數表示式類似於這樣 a 2 n b n 3 c n 2 d n lg n e n f a 0時,時間複雜度就是o 2 n a 0,b 0 o n 3 a,b 0,c 0 o n 2 依此類推 例項 for...
時間複雜度計算方法
o 1 constant complexity constant 常數複雜度 o log n 對數複雜度 o n 線性時間複雜度 o n 2 平方 o n 3 立方 o 2 n 指數 o n 階乘 隨著現在儲存空間的便宜,很多情況下,我們是願意用空間複雜度來換取時間複雜度的,因為記憶體,磁碟等這些和...
時間複雜度計算方法
o 1 constant complexity constant 常數複雜度 o log n 對數複雜度 o n 線性時間複雜度 o n 2 平方 o n 3 立方 o 2 n 指數 o n 階乘 隨著現在儲存空間的便宜,很多情況下,我們是願意用空間複雜度來換取時間複雜度的,因為記憶體,磁碟等這些和...