時間複雜度與空間複雜度如何計算

2021-08-18 14:25:46 字數 1109 閱讀 8728

· 時間複雜度

· 空間複雜度

統稱為演算法複雜度!

答:不同的環境執行的時間是不同的,所以用時間衡量沒有意義

只有執行次數永遠都是確定的

下列程式會執行多少次?

void test(int n) 

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

int count = 10;

while(count--)

}

f(n)=nn+2n+10

時間複雜度實際就是乙個函式,來計算基本操作次數

演算法存在最好,最壞和平均情況。在實際中通常關注的是演算法的最壞運**況。

因此用o(f(n))–大0漸進法表示時間複雜度

1:用常數1取代所有的常數

2: 只保留最高端項

3:如果最高端不是項數不是1,取出這個常數

void test1(int n) 

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

}

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

o(f(n))=n

遞迴演算法:遞迴總次數*每次遞迴複雜度,

遞迴多了容易棧溢位。(棧空間預設大小: windows 1mb,linux 8mb)

函式建立物件的個數關於問題規模的表示式,用o的漸進法表示

int sum(int n) 

空間複雜度:o(1)

(建立變數的個數)

long long fib(int n) 

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

空間複雜度:o(n)

時間複雜度和空間複雜度往往是相互影響的。當追求乙個較好的時間複雜度時,可能會使空間複雜度的效能變差

常用的演算法的時間複雜度和空間複雜度:

計算時間複雜度與空間複雜度

如何衡量乙個演算法的好壞?複雜度 空間複雜度 時間複雜度 事後統計法 就是在演算法的程式執行結束後,根據實際執行結果衡量演算法好壞 事前估計法 就是在程式執行之前,先按照程式 來預估演算法的好壞 時間複雜度 用基本指令的執行次數而不是執行時間代表時間複雜度,同乙個程式在不同配置的機器下的執行時間不一...

時間複雜度與空間複雜度

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

時間複雜度與空間複雜度

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