時間複雜度與空間複雜度

2021-10-21 04:25:27 字數 978 閱讀 3793

對乙個程式或演算法來說,評估它的執行效率主要從兩個方面來考慮,乙個是時間上的開銷,乙個是空間上的開銷。時間方面指的是程式的執行時間,稱為時間複雜度,空間方面指的是程式在執行時使用計算機記憶體的大小,稱為空間複雜度

演算法中執行基本操作的次數稱為演算法的時間複雜度。

對於演算法複雜度,一般採用大o漸進表示法。

用個例子演示一下什麼是大o漸進表示法。

對於乙個函式f(n) = 3n^2 + 10n + 5,採用大o漸進表示法為o(n^2).

也就是對於乙個函式表示式,保留其最高次項,忽略其他項,同時忽略其係數。其實就是一種在數量級上體現基本操作次數的表示方法。

下面具幾個例子來看看:

void

fun1

(int n)

}for

(int k =

0; k <

2* n; k++

)}

對於上面這個方法,可以看出基本操作count++執行了n^2 + 2 * n 次,用大o漸進表示法,保留其最高次項,忽略低次項,忽略高次項的係數,得到o(n^2)。

void

fun2

(int m,

int n)

for(

int j =0;

int j < n; j++

)}

對這個方法,基本操作執行了m + n次,所以用大o漸進表示法表示其演算法複雜度為o(n + m)。

void

fun3()

}

對於這個例子,基本操作執行了100次,用大o漸進表示法表示其演算法複雜度為o(1)。

空間複雜度是乙個演算法在執行過程中臨時占用儲存空間大小的量度。空間複雜度不是程式占用了多少位元的空間。空間複雜度算的是變數的個數。空間複雜度的表示一般也使用大o漸進表示法。

時間複雜度與空間複雜度

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

時間複雜度與空間複雜度

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

時間複雜度與空間複雜度

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