Сколько места ему нужно относительно значения 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;
Наконец, давайте проанализируем внутреннюю часть for:
sum += 2 * i + l;
Это также постоянное время, поскольку в основном это одно умножение и две суммы. Снова O (1). Но этот O (1) он вызывается внутри for:
for (int i = 0; i < n; i++) {
sum += 2 * i + l;
}
Этот цикл for будет выполняться ровно n
раз. Следовательно, общая сложность этой функции составляет:
C = O(1) + n * O(1) + O(1) = O(n)
Это означает, что для этой функции потребуется время, пропорциональное значению n
.
person
Tommaso Fontana
schedule
03.02.2020