主定理(主公式)
如果递归算法可以描述成T(N)=a*T(N/b)+O(N^d);
那么可以根据主定理得到时间复杂度:
1)log(b,a)>d -> 时间复杂度为O(N^log(b,a))
2)log(b,a)=d -> 时间复杂度为O(N^d*logN)
3)log(b,a)<d -> 时间复杂度为O(N^d)
以归并排序为例:
归并排序的递归算法描述为T(N)=2*T(N/2)+O(N)
分支加上将两部分合并的复杂度。
所以a=2,b=2,d=1,符合主定理2),因此复杂度为O(N^logN)。