https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)
对于时间复杂度形如
T(n)=aT(n/b)+f(n)
的递归过程,有
- f(n)=O(nc),c<logba,则 T(n)=Θ(nlogba),此时递归树的调用复杂度更大;
- f(n)=Θ(nlogbalogkn),k≥0,则 T(n)=Θ(nlogbalogk+1n);更一般地,对于所有 k,
- 若 k>−1,则 T(n)=Θ(nlogbalogk+1n);
- 若 k=−1,则 T(n)=Θ(nlogbaloglogn);
- 若 k<−1,则 T(n)=Θ(nlogba);
- f(n)=Ω(nc),c>logba,且存在 k<1 使得对于足够大的 n,af(n/b)≤kf(n),则 T(n)=Θ(f(n)),此时 f 的调用复杂度更大。
简单的记忆方式:
若
T(n)=aT(n/b)+f(n)=aT(n/b)+O(nclogkn)
则
T(n)={O(nlogbalogk+1n)O(max{nlogba,f(n)})c=logbaotherwise
注意,上式牺牲了一定严谨性。