演算法的時間複雜度詳解

2021-08-27 01:11:28 字數 887 閱讀 3689

一般情況下,演算法中基本操作重複執行的次數是問題規模 n 的某個函式f(n)演算法的時間度量記作t(n) = o(f(n)),他表示隨著問題規模n增大,演算法執行時間的增長率和f(n)的增長率相同,乘坐演算法的漸進時間複雜度(asymptotic time complexity),簡稱時間複雜度

演算法時間複雜度從小到大依次是: o(1) < o(logn) < o(n) < o(nlogn) < o(n2)

< o(n3)< o(2n)< o(n!)n)

時間複雜度越高,演算法消耗cpu就越高,執行速度就越慢。

分析時間複雜度**舉例如下:

int sum = 1, n = 100;

o(1):

sum = (1 + n) * n / 2;

o(logn):

while((sum < n)

o(n):

for(int i=0; i

o(n2):

for(int i = 0; i < n; i++) }

for(int i = 0; i < n; i++)

} //上面這個迴圈其實沒有執行到n的平方次,執行了n+(n-1)+(n-2)+...+1=n(n+1)/2=

n2/2 次

因為常數不需要計算,所以n

2/2最終他的時間複雜度還是o(n2)

演算法的時間複雜度有最好,最壞和平均複雜度。比如在乙個資料中查詢乙個數字,最好的時間複雜度為o(1),最壞的時間複雜度為o(n),平均複雜度為n/2

那麼我們稱這個演算法的時間複雜度為o(n),通常情況下,我們說的演算法時間複雜度都是最壞時間複雜度。

演算法的時間複雜度和空間複雜度詳解

演算法的時間複雜度和空間複雜度合稱為演算法的複雜度。1.時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算...

演算法時間複雜度空間複雜度

演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...

演算法 時間複雜度 空間複雜度

1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...