我正在试图弄清楚以下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)。
答案 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)