【发布时间】:2018-11-03 03:24:13
【问题描述】:
我得到了以下伪代码:
j = 1
while j < n:
k = 2
while k < n:
k = k*k
j++
在我看来,这段伪代码将具有以下复杂性:
O(n*log(n))
由于外部循环执行 n 次。而内部循环基本上每次将增量分成一半。我的想法是不是太过分了?
编辑:另外 1 个(我保证,这些不是作业,只是要理解的示例)
for i = 1 to n:
for j = 1 to n:
k = j*j
while k < n:
k++
在这种情况下,最外层的循环将执行 n 次。中间循环也将执行 n 次,现在我们将执行 n2 次。据我了解,最里面的循环将执行 log(n) 次,使我们处于 O(n2*log(n)) 次。我的理解正确吗?
【问题讨论】:
-
你确定你写的伪代码正确吗?我看到这个的方式有一个大小为 n 的外循环和一个大小为 n-1 的内循环,所以这应该是 O(n^2)。我假设 k++ 在内部循环中并且“做某事”是 O(1)。
-
什么是“做某事”?
-
@Mitchel0022 做某事只是意味着做你在循环中所做的任何事情。编辑删除它
-
@idnavid 我最初写错了。修好了。
标签: algorithm big-o computer-science asymptotic-complexity