[英]How to calculate the upper bound time complexity (`“big O`”) of a recursive function?
[英]Finding time complexity Big-Θ of this recursive formula involving floor function
我試圖找到這個算法的時間復雜度(Big-Θ):
Recursion(n):
while n > 1:
n = floor(n/2)
Recursion(n)
通過考慮最壞的情況,即 n 是 2 的冪,我找到了 O(n) 的上限。
但是,我無法為此找到下限(Big-Ω)。 我的直覺是這也是 Ω(n),但我不知道如何用地板函數來顯示它。
有什么建議? 謝謝!
編輯:我不相信的主要事情是 T(n/2) 等價於 T(floor(n/2))。 對於這個算法,如何證明這一點?
floor
函數在恆定時間O(1)
執行其操作。 因此,您可以忽略它/將其視為常量。 下面我們來分析一下算法的時間復雜度:
T(n) = T(n/2) + 1 (floor operation)
T(n/2) = T(n/4) + 1
...
T(2) = T(1) + 1 --> T(1) = constant
T(n) = T(n/4) + 2
T(n) = T(n/8) + 3
...
T(n) = T(n/2^k) + k 2^k = n therefore k=log(n)
T(n) = T(1) + log(n)
T(n) = log(n)
我們可以得出結論T(n)
∈ θ(log(n))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.