对于递归算法,常使用Master公式求解其时间复杂度:
T(N)=aT(N/b)+O(N^d) :
N:递归行为的规模|样本数量 T(N):递归的时间复杂度
N/b:递归后子过程的规模 a:子过程调用次数 aT(N/b):所有子过程的时间复杂度
除去递归之外的时间复杂度为O(N^d)
复杂度求解:
(1).logb(a)<d ---> O( N^d )
(2).logb(a)>d ---> O( N^logb(a) )
(3).logb(a)==d --->O( N^d * log(N) )
EG:快排为T(N)=2T(N/2)+O(N),复杂度为O(N*log(N))