递归方程的时间复杂度
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
有以下三种情况:
如果 f(n) = O(nc) 其中 c < Logba 然后 T(n) = O(nLogba)
如果 f(n) = O(nc) 其中 c = Logba 然后 T(n) = O(nLogba*Logn)
如果 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) = Θ(n 0*Logn) = O(Logn)
运行 递归方程的时间 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
有以下三种情况:
如果 f(n) = O(nc) 其中 c < Logba 然后 T(n) = O(nLogba)
如果 f(n) = O(nc) 其中 c = Logba 然后 T(n) = O(nLogba*Logn)
如果 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) = Θ(n 0*Logn) = O(Logn)