Вычислить время выполнения в Θ (·) как функцию от N.
public static void p5(int N) {
for (int i = 1; i <= N * N; i *= 2) {
for (int j = 0; j < i; j++) {
System.out.println("moo");
}
}
}
Для этого я начал вычислять время выполнения для нескольких значений N.
N = 1 C (N) = 1, поскольку j = только 0
N = 2 C (N) = 7, поскольку j = 0 для i = 1, j = 0,1 для i =2, j = 0,1,2,3 для i = 4
N = 3 C (N) = 15, поскольку j = 0 для i = 1, j = 0,1 для i = 2, j= 0,1,2,3 для i = 4, j = 0,1,2,3,4,5,6,7 для i = 8
Итак, существует закономерность:
C (1) = 1 = 2 ^ 0
C (2) = 7 = 2 ^ 0 + 2 ^ 1 + 2 ^ 2
C (3) = 15 =2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3
C (4) = 31 = 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4
C (N) = 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4 +… + 2 ^ N = 2 ^ (N + 1) - 1
ИтакЯ получаю Θ (2 ^ N) в качестве ответа!Тем не менее, ответ N ^ 2.
Можете ли вы помочь мне понять, в чем проблема?