Сколько места ему нужно по отношению к значению n
?
Единственная используемая переменная - sum
. sum
не изменяется в отношении n
, поэтому оно является постоянным.
Если оно является постоянным, то это O (1)
Сколько инструкций он выполнит относительно значения из n
?
Давайте сначала упростим код, а затем проанализируем его строка за строкой.
int pairSumSequence(int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += 2 * i + l;
}
return sum;
}
Объявление и инициализация переменной занимает постоянное время и не изменяется с значение n
. Следовательно, эта строка имеет значение O (1).
int sum = 0;
Аналогично, для возврата значения требуется постоянное время, поэтому оно также равно O (1)
return sum;
Наконец, давайте проанализируем внутреннюю часть для :
sum += 2 * i + l;
Это также постоянное время, так как в основном это одно умножение и две суммы. Снова O (1). Но этот O (1) он вызывается внутри for:
for (int i = 0; i < n; i++) {
sum += 2 * i + l;
}
Это для l oop будет выполнено ровно n
раз. Поэтому общая сложность этой функции:
C = O (1) + n * O (1) + O (1) = O (n)
Это означает, что эта функция займет время пропорционально до значения n
.