一段Java代码的运行时间

时间:2014-10-14 07:04:44

标签: java algorithm big-theta

我正在试图弄清楚以下Java代码片段的运行时间:

static void counter(int N) {
    int count = 0;
    for (int i = 0; i < N; i += 1) {
        for (int j = i + 1; j < N; j += 1) {
            count += 1;
        }
    }
    return count;
}

为了澄清,运行时间是\ Theta(N ^ 2),对吧?对于j的每次迭代,外循环运行N次并且内循环运行N-j次。把它放在一起就会得到\ Theta(N ^ 2)。

2 个答案:

答案 0 :(得分:0)

是的,Theta(n^2)是正确的。

内部循环运行(n-1) + (n-2) + ... + 1 + 0次迭代,adds up to n * (n-1) / 2 = 0.5*n^2 - 0.5*n = Theta(n^2)

答案 1 :(得分:0)

你是对的。

计算内循环为外循环的每次迭代运行的迭代次数,得到:

N-1 + N-2 + N-3 + ... + 1 =((N-1)* N)/ 2 = Theta(N ^ 2)