Master theorem主定理

参考链接:  【C++/算法】算法复杂度的表示及主定理_哔哩哔哩_bilibili

如何用公式计算复杂度:

 大O符号表示法中,时间复杂度的公式是: T(n) = O( f(n) ),其中f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。 

 上面的是一个递归的调用:设时间复杂度为T(n)

由上可知:T(n) = 1 + 2*T(n/2)

 

 递推式

 

递归的终点是n=1,return 1,也就是当2^k=n的时候,进入递归终点T(1),T(1) =1

可知此时T(n) =  2^(k+1)-1,把 2^k=n代入得k = logn, T(n) = n

用树来表示:递归树

 有K层,2^K个点,每个节点的时间复杂度为1

递归算法的复杂度

 每层执行的操作,如上面中的判断if()

 

 注意为什么是:(n/b)^d,因为是下一层,这里的b在上面就是2.

 以此类推,我们可以知道第K层的时间复杂度。

根据公比来估算时间复杂度:公比为

 公比为一:

 公比小于1:

 公比大于1:

 总结

 a 分支数

b 每次调用递归时 规模减少的量

 d 每层一定要执行的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值