Внутренний l oop и строка после - это место, где происходит обмен:
for (j = i - 1; j >= 0 && arr[j] > el; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = el;
Когда i = 0, ничего не происходит j = i - 1 = -1 и поэтому внутренний l oop не выполняется.
Но на следующей итерации i = 1, поэтому el
устанавливается на второй элемент, который равен 44. Тогда j = i - 1 = 0 и arr[0]
равно 99, что больше el
, поэтому выполняется внутренний l oop. поэтому arr[1]
устанавливается на arr[0]
, что составляет 99. Затем j уменьшается до -1, и теперь внутренний l oop останавливается.
Итак, j + 1 = 0 и нет arr[j+1]
или arr[0]
установлен на el
, что составляет 44. Так что теперь 44 и 99 поменялись местами.