时间复杂度分析:主定理
时间复杂度:主定理
求递归算法的复杂度:
\[T(n)=aT(n/b)+f(n)
\]
其中
\[f(n)=O(n^d)
\]
则
\[T(n)=\begin{cases}
O(n^d) & d>\log_ba \\
O(n^d\log n) & d=\log_ba\\
O(n^{\log_ba}) & d<\log_ba
\end{cases}
\]
可以理解为
- 当 \(d>\log_ba\) 时,递归宽度的消耗小于计算 \(f(n)\) 的消耗,\(f(n)=O(n^d)\) 占主导地位。
- 当 \(d=\log_ba\) 时,它们消耗均等,则为 \(O(n^d\log n)\)。
- 当 \(d<\log_ba\) 时,计算的消耗在于递归的广度,则 \(O(n^{\log _ba})\) 占主导地位。