1. 程式人生 > >(ainusers原創) 時間複雜度/空間複雜度(初學小結)

(ainusers原創) 時間複雜度/空間複雜度(初學小結)

時間複雜度(分析演算法執行效率【次數】)

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)