演算法時間複雜度計算方法

2021-08-03 20:04:52 字數 1280 閱讀 9448

判斷乙個演算法的效率時,一般忽略掉函式中的常數和次要項,主要關注最高端的階數。

演算法的時間複雜度即演算法的時間量度,記作: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 階乘 隨著現在儲存空間的便宜,很多情況下,我們是願意用空間複雜度來換取時間複雜度的,因為記憶體,磁碟等這些和...