算法复杂度计算

LetT(n)T(n)=aT(bn​)+O(nd)fora>1,b>1andd>0, thenT(n)dlogb​aT(n)=O(nd)看到上面三个时间复杂度计算的前提条件,发现少了一项,就是d=0。
摘要由CSDN通过智能技术生成

Master theorem

Let T ( n ) T(n) T(n) be defined by T ( n ) = a T ( n b ) + O ( n d ) T(n) = aT(\frac{n}{b}) + O(n^d) T(n)=aT(bn)+O(nd) for a > 1 ,   b > 1 a>1, \ b>1 a>1, b>1 and d > 0 d>0 d>0, then T ( n ) T(n) T(n) can be bounded by:

  • if d < l o g b a d<log_ba d<logba, then T ( n ) = O ( n l o g b a ) T(n) = O(n^{log_ba}) T(n)=O(nlogba);
  • if d = l o g b a d = log_ba d=logba, then T ( n ) = O ( n l o g b a l o g n ) T(n) = O(n^{log_ba}logn) T(n)=O(nlogbalogn);
  • if d > l o g b a d>log_ba d>logba, then T ( n ) = O ( n d ) T(n) = O(n^d) T(n)=O(nd);

看到上面三个时间复杂度计算的前提条件,发现少了一项,就是 d = 0 d=0 d=0 时要怎么计算,所以下面将对这四种情况进行推导说明。

1. d=0

d = 0 d=0 d=0时,可以适用于只分不 merge 的情况,比如查找二叉树某结点深度等。
在下面计算时会用到换底公式
a l o g b c = c l o g b a a^{log_b^c} = c^{log_b^a} alogbc=clogba

T ( n ) = a T ( n b ) + c = a 2 T ( n b 2 ) + 2 c = a 3 T ( n b 3 ) + 3 c ⋯ = a l o g b n T ( n b l o g b n ) + c ⋅ l o g b n = a l o g b n T ( n n ) + c ⋅ l o g b n = n l o g b a + O ( l o g n ) \begin{aligned} T(n) &= aT(\frac{n}{b})+c \\ &= a^2T(\frac{n}{b^2}) +2c \\ &= a^3T(\frac{n}{b^3}) +3c \\ &\cdots \\ &= a^{log_bn}T(\frac{n}{b^{log_bn}}) +c\cdot log_bn \\ &= a^{log_bn}T(\frac{n}{n}) + c\cdot log_bn \\ &= n^{log_ba}+O(logn) \end{aligned} T(n)=aT(bn)+c=a2T(b2n)+2c=a3T(b3n)+3c=alogbnT(blogbnn)+clogbn=alogbnT(nn)+clog

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值