Master 公式
什么是 Master 公式
用来求解子问题等规模的递归行为的算法的时间复杂度的一种方法
其中,表示母问题的规模是,表示子问题的规模为(即子问题必须等规模),表示调用子问题的次数,而表示除去子问题后,剩下的部分时间复杂度为
满足 Master 公式的递归行为,其时间复杂度计算如下
举几个例子
示例代码

- 在上图问题中,母问题的规模是,子问题的调用是相等的,即。
- 子问题调用了两次,除了子问题调用之外,剩下的语句复杂度是
综上,,因此其 Master 公式为 ,进而我们计算出其时间复杂度为
继续上图的算法,如果上问题中 process 函数中,调用自身时是计算左侧2/3的最大值和右侧1/3的最大值,那么本问题就不满足Master公式,因为其子问题的规模不是相等的。
图中部分代码说明
如果使用
mid=(L+R)/2来求中点,可能会导致溢出。因此可以写成mid=L+(R-L)/2,这样一定保证不会溢出。而上图中>>1(右移一位)就等同于其除以2了,而且直接右移一位比除2要快。