算法分析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. 常用的数量级

符号名称
\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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值