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