为什么这个算法是O(N)?

时间:2015-04-21 01:27:24

标签: c algorithm big-o

以下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;  
    }
}

有人愿意让我对这个问题有所了解吗?

提前致谢!

1 个答案:

答案 0 :(得分:20)

因为N + N / 2 + N / 4 + ... = 2N。