Временная сложность, пока l oop когда привязка сбрасывается? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть время l oop, которое перебирает массив, используя индекс "i", и выполняет только O (1) операций. Если, возможно, граница j уменьшена для сравнения элемента в j с текущим элементом в i, я хочу продолжить итерацию по массиву, если j Пример (в Java):

i = 0;
j = array.length - 1;

while(i < j) {

  ...

  if (j < i) {

    j = array.length - 1;

  }

  i = i + 1;

}

1 Ответ

0 голосов
/ 15 марта 2020

Это потому, что условие j < i никогда не выполняется (по крайней мере, для длины массива, которая больше нуля).

Представьте, что вы начинаете с j = 1,, тогда у вас есть только одна итерация, где значение i увеличивается только один раз, в результате чего выражение i < j будет оценено как ложное на следующей итерации (здесь значение i равно 1) и, следовательно, ломая l oop.

Это также относится к любому случаю выше j = 1 (если не переполнение).

И еще один совет для университетского материала: просто попробуйте. Либо пройдя его вручную, либо добавив вызовы println в исходный код. Это гораздо проще сделать на примере, чем переосмыслением абстрактных чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...