天天看點

算法分析O(n), O(nlogn)...

1. 定義

大O符号(Big O notation)是用于描述函數漸近行為的數學符号。更确切地說,它是用另一個(通常更簡單的)函數來描述一個函數數量級的漸近上界。

2. 說明

f(n) = 2n^2 + 3n + 1

f(n) = O(n^2)

or

f(n) ∈ O(n^2)

為什麼可以這麼去描述?

lim( f(n) / n^2) = a ( n--> 0, a為常數)

n^2 是f(n)的最高階,f(n)的特性由最高階決定。

為什麼不是O(2*n^2)?

O(g(n)):lim( f(n) / g(n)) = a ( n--> 0, a為常數)

當n趨近于無窮大時,f(n) / g(n)為一個常數,那麼O(g(n))表示f(n)的數量級。

注:關于O(n)更加具體的數學描述請參見:

Big O notation

3. 常用的數量級

符号 名稱
算法分析O(n), O(nlogn)...
常數(階,下同)
算法分析O(n), O(nlogn)...
疊代對數
算法分析O(n), O(nlogn)...
對數
算法分析O(n), O(nlogn)...
多對數
算法分析O(n), O(nlogn)...
線性,次線性
算法分析O(n), O(nlogn)...
線性對數,或對數線性、拟線性、超線性
算法分析O(n), O(nlogn)...
平方
算法分析O(n), O(nlogn)...
多項式,有時叫作“代數”(階)
算法分析O(n), O(nlogn)...
指數,有時叫作“幾何”(階)
算法分析O(n), O(nlogn)...
階乘,有時叫做“組合”(階)
算法分析O(n), O(nlogn)...

4. 算法的上限、下限

符号 定義
算法分析O(n), O(nlogn)...
漸近上限
算法分析O(n), O(nlogn)...
asymptotically negligible (
算法分析O(n), O(nlogn)...
)
算法分析O(n), O(nlogn)...
漸近下限 (當且僅當
算法分析O(n), O(nlogn)...
)
算法分析O(n), O(nlogn)...
asymptotically dominant (當且僅當
算法分析O(n), O(nlogn)...
)
算法分析O(n), O(nlogn)...
asymptotically tight bound (當且僅當
算法分析O(n), O(nlogn)...
算法分析O(n), O(nlogn)...
)

5. 參考

大O符号

Big O notation

繼續閱讀