算法复杂度分析

递推算法

对于递推类和循环类算法,我们一般统计其主要的基本操作个数与问题的规模大小。从而就可以推出算法复杂度。

递归算法

  1. 对于任意 α!=1 的通式 T(n)=T(αn)+T((1α)n)+cn ,其时间复杂度都是 O(nlogn)
  2. 对于范式 T(n)=aT(n/b)+nd ,对于 a>1,b>1,d>0 ,所以可以得出最后的复杂度为:

    对上面分析,当 d>logba 时,那么 abd 就小于1,所以 1+abd+(abd)2+.......+(abd)logbn 的和极限一定小于某个常数,即 T(n)<Cnd ,所以 T(n)=nd .
    d=logba 时,那么 1+abd+(abd)2+.......+(abd)logbn 等于 logbn ,所以这个时候 T(n)=nlogbalogn .
    d<logba 时,那么 abd 就大于1,所以 1+abd+(abd)2+.......+(abd)logbn 的和是一个随n的线性增长,即 T(n)<nlogba ,所以 T(n)=nlogba .
双层递推

如:

aT(n)+bT(n1)+cT(n2)=0

对于此类问题的分解:
采用求取特征值的求法:
ax2+bx+c=0

这样转换的原因在于,呈现上述公式的解一般是指数型解可以化简,这样x就相当于指数基数了。这样就可以最终求出 T(n) 的表达式,时间复杂度一目了然。

特殊形式

M(n)=k1M(n1)+k2

k11 时,这样的表达式一般表示的也是指数级别的复杂度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值