最近在刷软考题。。这个递归式求时间复杂度一直很绕。。网上百度了下,有主方法、递归树法、数学归纳法等等、、
下面针对形如 T(n) = aT(n/b)+f(n) 递归式的求解做个归纳总结
第一步:观察f(n)中有没有对数因子 比如f(n)=n2lgn 此类就含有。。
如果有的话:T(n) = aT(n/b)+lgkn 那么时间复杂度为O( nlogbalgk+1n )
第二步:没有的情况: 通过比较nlogba 和 f(n)多项式的大小
如果nlogba >f(n) ,则时间复杂度为O( nlogba)
如果nlogba <f(n) ,则时间复杂度为O(f(n))
简单记忆:如果f(n)含对数因子 复杂度幂加一 如果不含对数因子,复杂度取大的