为什么这个算法是 O(N)?
Why is this algorithm O(N)?
下面的 C 代码显然是 O(N)(根据我的练习考试)。但是,我不确定为什么它是 O(N) 而不是 O(Something*Something)。
void doit(int N) {
while (N) {
for (int j = 0; j < N; j += 1) {
}
N = N / 2;
}
}
有人愿意给我一些关于这个问题的见解吗?
提前致谢!
因为 N + N/2 + N/4 + ... = 2N.
下面的 C 代码显然是 O(N)(根据我的练习考试)。但是,我不确定为什么它是 O(N) 而不是 O(Something*Something)。
void doit(int N) {
while (N) {
for (int j = 0; j < N; j += 1) {
}
N = N / 2;
}
}
有人愿意给我一些关于这个问题的见解吗?
提前致谢!
因为 N + N/2 + N/4 + ... = 2N.