【发布时间】:2015-11-10 15:01:33
【问题描述】:
对于这两个 while 循环,我想弄清楚大 O 复杂度。没有详细给出这些选项:(O(log N),O(sqrt(N),O(N),O(N log N),O(N·N)。这是一个古老的考试问题,我找不到答案。
问题 1
int i, j = N;
while (i < j) {
i += 2 * j + 1;
j++;
}
问题 2
int i = 1, j = N;
while (i < j) {
i += i;
j--;
}
第一个的答案应该是 O(N·N),第二个的答案应该是 O(log(N))。如果有人能解释答案,那就太好了。
【问题讨论】:
-
请写下为什么你认为第一个是O(n^2),第二个是O(log n)。
-
在第一季度,
int i的值未定义。错字? -
编辑您的第一个 sn-p。它令人困惑。
-
第一个循环是 O(1),第二个是 O(logN)
-
第一个循环包含未定义的行为,因为
i未初始化。
标签: c loops while-loop big-o