【发布时间】:2021-03-28 13:31:01
【问题描述】:
我很难找到以下算法的复杂性:
int count = 0;
for (int i = 0, i <n -1; i++) {
for (int j = i +1; j < n; j++) {
for (int k = n; k > n/2; k--) {
count++;
}
}
}
int j = 0;
int num = count;
while(j < num) {
for (int k = 0; k < 10; k++) {
count++;
}
j++;
}
在最坏的情况下,我得到了 O(????)。这是对的还是我搞砸了?
如果有人可以解释,那就太好了,也许每行正在发生什么操作。我在第一部分真的很困惑,因为有多个嵌套的 for 循环。
【问题讨论】:
-
你是如何得到 O(n^3) 的?正如数学老师所说,你能展示你的工作吗?
-
可能是因为缺乏正确的理解,但这是因为第一个块中的三个for循环,但我不太确定特别是“for (int k = n; k > n/2; k--)",因为这看起来像 log(n),对还是我又错了?