Таким образом, в следующем коде j
выполняется n
раза, когда i = 0
.Как только я повторяю один раз (i = 0,2,3....n)
, j
никогда не выполняется, так как условие оператора if истинно и n
добавляется к j
.i
продолжает повторяться до n
, когда цикл (оба цикла) прекращает выполнение и метод завершается.
public static void main(String[] args) {
int x = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(j < i) j = j + n;
else x = x+1;
}
}
}
Моя путаница заключается в том, почему сложность времени равна O(n)
, когда оба циклаитерация до n
в некоторый момент, i
всегда итерация до n
и j
итерация до n
, когда i = 0
... Разве это не должно быть O(n^2)
, поскольку мы умножаем nxn
?