学习中心
登录

Master公式--分析递归的时间复杂度

Hainui 2023-11-02 18:56:09
124 0

image_110.png

最后一个logN默认是以2为底

递归求最大值的表达式

image_111.png

求最大值 左侧范围:N/3 右侧范围:2N/3image_112.png

求最大值 左侧范围:N2/3 右侧范围:2N/3

image_113.png

求最大值 左侧范围:N/2 右侧范围:N/2 最后返回之前打印一遍范围上的值 除了递归调用的行为又进行了打印 O(N)

image_114.png

子问题的规模一致那么就可以通过master公式估计时间复杂度,如果子问题的规模不一致就不能通过master来估计时间复杂度,这种情况就必须用纯数学的方式,渐近线的方式来估计时间复杂度;

子问题规模不一致举例:T(N/3) + T(2N/3)这种方式 两个子问题规模 N/3!=2N/3,所以这时候就不能采用master公式的方式来估计时间复杂度;

T(N)=2*T(N/2) 这种子问题的规模都是N/2,是可以采用master公式的 前面满足 后面也要满足 O(N^d) 只要公式满足这个形式:image_115.png

那么时间复杂度就可以按照下面的方式来估计:

image_116.png

我们要去确定具体的a,b,d然后直接带入公式复杂度直接确定:image_118.png

image_119.pngimage_120.png

image_121.png

Master公式只用看递归一层的行为是什么样子,然后写出算式,找到a b d 直接确认复杂度

该文章还没有评论,快来抢占沙发吧~
Hainui
这个人很懒,什么都没留下~