确定特定循环的 Big(O) 效率

Determing the Big(O) efficiency of a particular loop

有人要求我确定此循环的大 O 表示法。

    int x = 1;
    int n = 1000;
    while (x < (n*n))
    {
        int y = n;
        while (y > 0)
        {
            y = y-1;
        }
        x = x+x;
    }

现在我看到这是一个嵌套循环。但这绝对不是 N^2,对吗? 我明白是什么让某些事情成为 O(n) 或 O(log(n)),但我将如何确定一个特定的循环,比如这个循环?

内循环从n0,所以是O(n ).

外循环

while (x < (n*n)) {
    ...
    x = 2*x;
}

是对数,运行从1n*n,就是O(log(n2)) = O(2 log n) = O(log n).

由于循环是嵌套的,所以将复杂性相乘得到 O(n log n).