递归行为时间复杂度计算:master公式

本文深入探讨了Master公式在分析递归算法时间复杂度中的应用。通过实例解释了如何确定a、b和d的值,并根据这些值推导出递归算法的时间复杂度。例如,二分查找的Master公式为T(N)=2*T(N/2)+O(N^0),而当问题被平均分成三份时,公式变为T(N)=3*T(N/3)+O(N^0)。了解Master公式有助于优化和理解递归算法的效率。
摘要由CSDN通过智能技术生成

master公式

T(N) = a * T(N/b) + O(N^d)

公式解释

N是初始问题的负责度
a是次数的意思,也就是调用相同规模的递归次数
b是递归的划分,也就是将原问题划分成相同规模的b份
O(N^d),d是除去递归代码外的其他运算的时间复杂度

例如,二分查找的递归,将原始问题每次划分成两份,依次递归。
这个问题中,每次将问题划分成两份,所以b是2,然后依次递归左右部分,因此,子递归的调用了2次,a是2,除了递归代码,其余部分没有遍历操作,只有简单的O(1)操作,因此,d=0。
所以,master公式为: T(N) = 2 * T(N/2) + O(N^0)

再例如,将上述二分查找,换成每次平均划分三份,那么b=3,依次调用三次,所以a=3,额外时间复杂度仍是O(1),所以d=0。
所以,master公式为: T(N) = 3 * T(N/3) + O(N^0)

master公式使用

确定了a,b,d后,直接套下列公式
log(b,a) > d ------> 递归时间复杂度为:O(N^log(b,a))
log(b,a) = d ------> 递归时间复杂度为:O(N^d*logN)
log(b,a) < d ------> 递归时间复杂度为:O(N^d)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值