我原以为以下代码的时间复杂度是O(log N),但答案却说是O(N)
。我想知道为什么:
int count = 0;
for (int i = N; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
count += 1;
}
}
对于内部的for循环,它运行了这么多次:
N + N/2 + N/4 ...
在我看来,这似乎是logN
。请帮助我理解为什么会是这样。谢谢。
我原以为以下代码的时间复杂度是O(log N),但答案却说是O(N)
。我想知道为什么:
int count = 0;
for (int i = N; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
count += 1;
}
}
对于内部的for循环,它运行了这么多次:
N + N/2 + N/4 ...
在我看来,这似乎是logN
。请帮助我理解为什么会是这样。谢谢。