【发布时间】: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
递归方程的运行时间 Cn = C(n/2) + 1 , C1 = 1。
它的时间复杂度是多少?
我在想 O(logn) 因为它与 (+1) 无关,因为在大 O 表示法中 n > 1。如果 n = 0,那将只是 O(1)。我很困惑。感谢您的帮助。
【问题讨论】:
标签: time-complexity recurrence
是的 Cn = Cn/2 + 1 的时间复杂度是 O(logn) 使用Master Theorem。顺便说一句,它是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) = Θ(n0*Logn) = O(Logn)
【讨论】: