時間複雜度與空間複雜度

2021-08-20 04:56:12 字數 1540 閱讀 6206

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

例如:

void test0(int n)

//總執行次數f(n)=10

//時間複雜度:o(1)

void test1(int n)

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

}//總執行次數f(n)=2*n+10

//時間複雜度:o(n)

void test1(int n)

for (int idx = 0; idx < 2 * n; ++idx)

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

}}//總執行次數f(n)=n^2+2*n+10

//時間複雜度:o(n^2)

void test1(int n,int m)

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

}//總執行次數f(n)=m+n

//時間複雜度:o(m+n)

int bin_search(int arr,int left,int right,int sz,int key)

return -1;//找不到返回-1

}//時間複雜度:o(log(n/2))

遞迴演算法的時間複雜度:遞迴總次數*每次遞迴的次數

例:求n的階乘

int fac(int n)

//時間複雜度:o(n)

空間複雜度:函式中建立物件的個數關於問題規模函式表示式,一般情況下用o的漸近表示法表示

例如:

int

sum(int n)

//空間複雜度:o(1)

long

long fib(int n)

return fib(n - 1) + fib(n - 2);

}//空間複雜度:o(n)

//時間複雜度:o(2^n)

空間複雜度**:

時間複雜度**:

時間複雜度與空間複雜度

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

時間複雜度與空間複雜度

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

時間複雜度與空間複雜度

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