如何计算大 O 表示法中递归算法的复杂度?
How to calculate complexity of recursive algorithm in Big O notation?
递归算法具有复杂性:
W(n)=2W(n/2)+ Θ(n)
我的解决方案或猜测是 O(n)。
如何解决这种复杂性?
Master Theorem 涵盖了此类情况。直接看也方便:
W(n) = 2 W(n/2) + Theta(n)
= 2(2 W(n/4) + Theta(n/2)) + Theta(n)
= 4 W(n/4) + 2 Theta(n)
因此,对于每个递归步骤,您都会得到另一个 Theta(n),并且递归的深度是 log n。因此,总工作量为 O(n log n)。
递归算法具有复杂性: W(n)=2W(n/2)+ Θ(n)
我的解决方案或猜测是 O(n)。
如何解决这种复杂性?
Master Theorem 涵盖了此类情况。直接看也方便:
W(n) = 2 W(n/2) + Theta(n)
= 2(2 W(n/4) + Theta(n/2)) + Theta(n)
= 4 W(n/4) + 2 Theta(n)
因此,对于每个递归步骤,您都会得到另一个 Theta(n),并且递归的深度是 log n。因此,总工作量为 O(n log n)。