主项定理Master Method 计算时间复杂度

在面试题目中有一部分是让大家求时间复杂度的问题,例如给出我们:  T(n) = a * T(n/b) + f(n)   ( ³  1,b  >  1,f(n)一般是个简单函数)这样的递归方程,计算其时间复杂度。

这时可以有2种方法,来计算时间复杂度。

一是用递归树,逐层代入原式,最终形成一个级数,然后用一个函数来表达,得到T(n)。

(我们这里主要讨论第二种方法,递归树详见   http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html )。

二是应用主项定理Master Method 。其实,主项定理也就是对递归树方法的一种归纳,形成了固定的计算方式,并分三种情形来计算。这三种情形主要是比较 nlogba 与 f(n),为什么要比较这两个函数? 

观察原式,可以看出,nlogba其实相当于用递归树方法解出的递归方程的右侧的第一项,而f(n)则是递归方程的右侧的第二项,这样,主项定理实际上是在比较组成结果的两个函数项,而且这种比较是按照数量级(或者说是变化幅度)来比较的,也就是说,如2n 与 28n是数量级(变化幅度)相当的。可以简单地说,递归方程的右侧的两项,哪项变化的块,T(n)就属于哪项的数量级。


接下来我们做几道题目来巩固一下:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值