主定理一般形式是T(n) = a T(n / b) + f(n), a >= 1, b > 1。递归项可以理解为一个高度为 logn 的 a 叉树, 这样 total operation就是  (a ^ logn) - 1,  右边的f(n)假设为 n 那么我们对比一下这两项就会发现 T(n)的复杂度主要取决于 loga 与 c 的大小。所以我们才会有接下来的三种case。也需要注意什么时候不可以使用主定理。

Case 1:  c < loga ,   O(n) = n ^ loga  , 意味着我们可以忽略 f(n)

Case 2:  c = loga,    O(n) = nlogn   ,  k >= 0

Case 3:  c > loga,    O(n) = n

Reference:

https://en.wikipedia.org/wiki/Master_theorem

05-07 15:12