算法复杂度

O(g(n))表示一个函数集合

定义:O(g(n)) = {f(n):存在c>0,>0,使得对所有n有0f(n)c*g(n)}

例:2=O() (即2O() ,O()2

即2是属于O() 定义的集合的,假设c=2,=10,则0f(n)cg(n)即 022*即0,对于所有的n10,都大于,所以2O()

直观上来看,其实O标记定义的就是一个上界,表示算法最糟糕的情况下主要操作的执行次数也不会超过c*(n为规模,如对n个数进行排序),所以如果某算法在最糟糕情况下的主要操作的执行次数为2,它也依然可以说是时间复杂度为O()的算法

 

(g(n)) = {f(n):存在c>0,>0,使得对所有n有0c*g(n)f(n)}  

表示的是一个下界)

(g(n)) = {f(n):存在>0,>0,>0,使得对所有n有0*g(n)f(n)*g(n)}

表示的是一个渐进紧确界)

o(g(n)) = {f(n):对任意c>0,存在>0,使得对所有n有0f(n)<c*g(n)}

(o表示的是一个严格的上界)

(g(n)) = {f(n):对任意c>0,存在>0,使得对所有n有0c*g(n)<f(n)}

表示的是一个严格的下界)

 

当n大于某个值到趋于无穷的这个区间中:

f(n)(g(n)): 存在c使得f(n)总小于等于c*g(n)

f(n)(g(n)):存在c使得f(n)总大于等于c*g(n)

f(n)(g(n)):存在使得f(n)总介于*g(n)和*g(n)之间

f(n)o(g(n)):不管c多小f(n)都小于c*g(n)

f(n)(g(n)):不管c多大f(n)都大于c*g(n)

 

f(n)(g(n))f(n)的最高阶项一定和g(n)相同。

f(n)(g(n))f(n)O(g(n))且f(n)(g(n))。

 

对于、不管f(n)是多少项的多项式,只需要看最高次项,增长最快的那项即可

1、log n、n、n*log n、、n! 在前面的增长越慢,后面的增长越快

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值