演算法時間複雜度

2021-10-04 10:11:16 字數 1152 閱讀 3220

乙個演算法花費的時間與演算法中語句的執行次數成正比,那個演算法中語句執行次數多,它花費的時間就多。乙個演算法中的語句執行次數被稱為語句頻度或時間頻度,記為t(n)

可忽略常數項

可忽略低次項

若有某個函式f(n)使t(n)/f(n)的極限值為不等於0的常熟,則稱f(n)是t(n)的同數量及函式,基座t(n) = o(f(n))為演算法的漸進時間複雜度,建成時間複雜度

t(n)不同,但時間複雜度可能相同,如:t(n) = n2+7n+6與t(n) = 3n+2n+2它們的t(n)不同,但時間複雜度相同,都為o(n2)

用常數1代替執行時間中的所有加法常數

修改後的執行次數函式中,只保留最高端項

去除最高端項的係數

常數階o(1)

對數階o(log2 n)

線性階o(n)

線性對數階o(nlog2 n)

平方階(n^2)

立方階(n^3)

k次方階(n^k)

指數階(2^n)

沒有迴圈等複雜結構,只執行一次

int i =1;

while

(ii = i*2;

//此時當執行了log2 n次之後,i = n

for

(int i =

0; i< n ; i++

) j = i;

for

(int m =

1; m

)

for

(int x =

1; i<=n ; i++

)for

(int j =

1; j<= n; j++

) dosomething...

..

平均時間複雜度:所有可能的輸入例項均以等概率出現

最壞時間複雜度:最壞情況下的時間複雜度

乙個演算法的所耗費的儲存空間

乙個演算法在執行過程中臨時占用儲存空間大小的量度

在做演算法分析時,主要討論的是時間複雜度。

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

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

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

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...

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

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