時間與空間複雜度

2021-09-29 15:53:50 字數 928 閱讀 8195

第一種是時間效率,被稱為時間複雜度,表示乙個演算法的理論上的耗時,衡量的是乙個演算法的執行速度。

第二種是空間效率,被稱作空間複雜度,主要衡量乙個演算法所需要的額外空間。

時間頻度

乙個演算法中,語句執行的次數,被稱為時間頻度t(n)

大o符號:

用於描述函式漸進行為的數學符號。存在某個輔助函式f(n),當n->∞時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式,記做t(n)=of(n),則稱of(n)為演算法的漸進時間複雜度,簡稱時間複雜度。

計算方法

計算出時間頻度與t(n)的數量級

忽略常量,如果執行時間是常數量級,則用1表示

忽略低次冪

忽略高次冪係數

o(1) 常數演算法

int a =

1, b =

3, c =

3;

單條操作頻度為1,屬於常數量級,所以為o(1)

o(n) 線性

int sum =0;

for(

int i =

0; i < n; i++

)

sum = 0 與 i = 0,操作頻度為1,io(n^2)
int num1, num2;

//頻度為1

for(

int i=

0; i)}

t(n) = 2+4n+3n2=o(n^2)

o(log2 n) 折半演算法

int i =1;

while

(i<=n)

可以理解為2^f(n) = n,則f(n) = log2 n , t(n) = o(log2 n)。

時間複雜度與空間複雜度

空間複雜度 space complexity 是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做s n o f n 比如直接 插入排序 的時間複雜度 是o n 2 空間複雜度是o 1 而一般的 遞迴演算法就要有o n 的空間複雜度了,因為每次遞迴都要儲存返回資訊。乙個演算法的優劣主要從演算法...

時間複雜度與空間複雜度

本文是對時間複雜度以及空間複雜度的乙個理解 時間複雜度 由於環境的不同,同樣的 執行所需要的時間是不同的,所以是不能拿來比較的 而函式中執行的次數確實一樣的 所以時間複雜度就是 程式每個迴圈中的語句總共會執行的次數 時間複雜度的表示方法 大o漸進表示法 o f n 這裡的f n 是什麼呢?void ...

時間複雜度與空間複雜度

本文部分取自搜狗百科 在求演算法效率時,通常有事前分析和事後分析兩種方法,事後分析因為必須實際檢驗過後才能得出答案,且可能由於硬體方面等外部原因影響結果而不被推廣,事前分析的主要就是在考量乙個演算法的基本執行次數,這就是時間複雜度。時間複雜度 一般情況下,演算法中基本操作重複執行的次數是問題規模n的...