【问题标题】:time complexity of the recurrence equation递推方程的时间复杂度
【发布时间】:2023-05-06 05:34:01
【问题描述】:

递归方程的运行时间 Cn = C(n/2) + 1 , C1 = 1。

它的时间复杂度是多少?

我在想 O(logn) 因为它与 (+1) 无关,因为在大 O 表示法中 n > 1。如果 n = 0,那将只是 O(1)。我很困惑。感谢您的帮助。

【问题讨论】:

    标签: time-complexity recurrence


    【解决方案1】:

    是的 Cn = Cn/2 + 1 的时间复杂度是 O(logn) 使用Master Theorem。顺便说一句,它是Binary Search 的方程。

    来自主方法:

    Tn = aTn/b + Fn

    有以下三种情况:

    1. 如果 f(n) = O(nc) 其中 c Logba 那么 T(n) = O(nLogba)

    2. 如果 f(n) = O(nc) 其中 c = Logba 那么 T(n) = O(nLogba*Logn)

    3. 如果 f(n) = O(nc) 其中 c > Logba 那么 T(n) = O(f(n))

    在您的情况下: a = 1, b = 2

    所以 nLogba = nLog21 = n0 = 1

    还有 f(n) = O(1)。所以nLogba = c(情况2)

    因此,T(n) = O(nLogba*Logn) = Θ(n0*Logn) = O(Logn)

    【讨论】: