時間復(fù)雜度和空間復(fù)雜度常被用來衡量算法消耗的資源和時間速缨,從而判斷算法的優(yōu)劣。
時間復(fù)雜度
時間復(fù)雜度用來衡量算法的計算時間代乃,用漸近符號(大O符號)進(jìn)行表示旬牲。常見的時間復(fù)雜度如下:
O(1) constant complexity
O(logn) logarithmic complexity
O(n) linear complexity
O(nlogN) 線性對數(shù)階
O(n^2) N square complexity
O(n^3) N cubic complexity
O(2^n) exponential growth
O(n!) factorial 階乘
- 對于簡單的情況,可利用算法中的循環(huán)次數(shù)判斷其時間復(fù)雜度襟己。在計算時間復(fù)雜度時引谜,運算次數(shù)為
- 對于遞歸情況员咽,可畫出遞歸狀態(tài)的遞歸樹輔助判斷。也可利用主定理 (master theorem)直接進(jìn)行計算贮预。
斐波那契數(shù)列遞歸
主定理
推導(dǎo)參考主定理 Master Theorem贝室。
常用算法的主定理應(yīng)用
空間復(fù)雜度
空間復(fù)雜度用來衡量算法需要的資源如存儲容量。
一般來說仿吞,算法的空間復(fù)雜度為代碼中建立的數(shù)組的長度滑频,
對于遞歸的情況,其空間復(fù)雜度為遞歸的深度唤冈。