我有这些嵌套循环
int sum = 0;
for (int n = N; n > 0; n = n/2) {
for (int i = 0; i < n; i++) {
sum++;
}
}
外环让我失望了一点。 运行时仍然是O(n ^ 2)还是其他东西?
答案 0 :(得分:2)
这里内循环执行1 + 2 + ... + n / 2 + n次。 它在这个序列中有lg n个项,这意味着int i = 0执行lg n次,
内循环中语句的总和是2n。 所以我们得到O(n + lg n)= O(n)