我想弄清楚以下时间的复杂性:
首先:
j = 1
while j < n:
j += log(j + 5)
这会是 log n 吗?
其次,复发关系:
T(n) = T(n/2) + T(n/4) + n
我知道你不能在这里应用大师定理,但我不知道如何找到复杂性。一个解决方案会很好,但是我猜想如何帮助我理解这一点会很好。
接下来,另一个递归关系:
T(n) = T(n/2) + log(n)
我相当肯定,Master定理可以在这里应用。离开我们:
a = 1, b = 2, f(n) = log(n)
这意味着我们会比较
n^(log_2(1)) to log(n) ==> n^0 to log(n)
使它成为Theta(log(n))
最后
j=1
while(j<n):
k=j
while k<n:
k += sqrt(k)
j += 0.25*j
我可以告诉外循环将运行4次。然而,我不清楚内循环。是 log ^ 2 n log log n 还是我完全不在思考。
我正在学习考试,并且发现我所掌握的材料严重不足。
答案 0 :(得分:0)
第一个是O(n)
我们知道,每次至少1
添加到上一个结果中。
如果你开始使用递归方程,第二个是:
T(n) = 2T(n/4) + T(n/8) + n + n/2 < 3T(n/4) + 3n/2
我们可以从主定理中说T(n) = \Theta(n)
。
第三个是真的,它是\Theta(log(n))
。
第四个循环中的外循环是T(n+1) = 5T(n)/4
。这意味着外循环运行log_{1.25}n
。在最坏的情况下,我们可以说内部循环在O(n)
中运行。因此,它将是O(nlog(n))
。如果你想要更严格的复杂性分析,你应该仔细检查,。