(ainusers原創) 時間複雜度/空間複雜度(初學小結)
阿新 • • 發佈:2018-12-12
時間複雜度(分析演算法執行效率【次數】)
1.一層for迴圈
for(int i=0;i<n;i++){} //n+1
----->時間複雜度:O(n+1)
2.兩層for迴圈
for(int i=0;i<n;i++){ //n+1
for(int j=0;j<n;j++){} //n(n+1)
}
----->時間複雜度:O(n^2+2n)或者O(n^2)
3.特殊情況(遞迴【遞迴總次數*每次遞迴次數
int guiMethod(int n){
if(n==1) return n;
return guiMethod(n-1)
}
----->時間複雜度:O(n)
空間複雜度(資料規模之間的增長關係【物件的個數】)
1.遞迴
int guiMethod(int n){
if(n==1) return n;
return guiMethod(n-1)
}
----->空間複雜度:O(n)
2.非遞迴
int unGuiMethod(int n){
if(n<2) return n;
return n-1;
}
----->空間複雜度:O(1)
常見的時間複雜度所耗費的時間從小到大依次是:
O(1) < O(logN) < O(N) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)