递归方程的时间复杂度

time complexity of the recurrence equation

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

它的时间复杂度是多少?

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

Cn = Cn/2 + 1[=74= 的时间复杂度] 是 O(logn) 使用 Master Theorem. Btw its the equation of 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 = 1b = 2

所以 nLogba = nLog21 = n0 = 1

还有 f(n) = O(1)。所以 nLogba = c (案例 2)

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