如果 对于一个求时间复杂度的式子满足递推式
T(n) = aT(n/b) + f(n) 其中a >=1 ,b>1
则我们可以通过判断
对某个常数,有
,则
若,则
对某个常数,有
且对某个常数c<1和所有足够大的n有,则
通俗点讲就是
如果 (此处的log是以a为底,我们把n表示无穷大) 则时间复杂度为
如果 (此处的log是以a为底,我们把n表示无穷大) 则时间复杂度为
(此处的log是以a为底)
如果 (此处的log是以a为底,我们把n表示无穷大) 则时间复杂度为
(此处的log是以a 为底) k为一个大于等于0的数 此时时间复杂度为
例子1
有a=9,b=3,f(n)=n
因此
由于,其中
由主定理的情况1可直接得:
例子2
此时k = 0
所以时间复杂度为nlog n