一. 時間複雜度(time complexity)
在進行算法分析時,語句總執行次數T(n) 是關於問題規模 n 的函數。進而分析執行次數T(n) 隨規模 n 的變化情況並確定T(n) 的數量級。
算法的時間複雜度就是算法的時間度量,記作T(n) = O( f(n) ) 。它表示隨問題規模 n 的增大,算法的執行時間的增長率和 f(n) 的增長率相同,稱作算法的漸進時間複雜度,簡稱爲時間複雜度。其中,f(n) 是問題規模 n 的某個函數。
常見的時間複雜度量級有:
- 常數階O(1)
- 對數階O(logN)
- 線性階O(n)
- 線性對數階O(nlogN)
- 平方階O(n²)
- 立方階O(n³)
- K次方階O(n^k)
- 指數階(2^n)
上面從上至下依次的時間複雜度越來越大,執行的效率越來越低。
二. 空間複雜度(space complexity)
作爲算法所需存儲空間的量度,記做S(n) = O( f(n) ) 。其中,n爲問題的規模;f(n) 爲語句關於 n 的所佔存儲空間的函數。
空間複雜度比較常用的有:O(1)、O(n)、O(n²)