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

来源:互联网 发布:用友网络股票 编辑:程序博客网 时间:2024/05/16 04:37

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. 常用的数量级

符号名称\Omicron(1)\!常数(阶,下同)\Omicron(\log^*n)\!迭代对数\Omicron(\log n)\!对数\Omicron[(\log n)^c]\!多对数\Omicron(n)\!线性,次线性\Omicron(n \log n)\!线性对数,或对数线性、拟线性、超线性\Omicron( n^2)\!平方\Omicron(n^c), \operatorname{Integer}(c>1)多项式,有时叫作“代数”(阶)\Omicron(c^n)\!指数,有时叫作“几何”(阶)\Omicron(n!)\!阶乘,有时叫做“组合”(阶)


4. 算法的上限、下限

符号定义 f(n)=\Omicron (g(n))  渐近上限f(n)=o(g(n))asymptotically negligible (\lim{} \frac{f(n)}{g(n)} = 0) f(n)=\Omega(g(n)) 渐近下限 (当且仅当 g(n) = \Omicron(f(n)) ) f(n) = \omega (g(n)) asymptotically dominant (当且仅当g(n)=o(f(n)) ) f(n) = \Theta(g(n)) asymptotically tight bound (当且仅当f(n) = \Omicron(g(n))f(n)=\Omega(g(n)) )

5. 参考

大O符号

Big O notation

原创粉丝点击