Всем привет.
Объясните, пожалуйста, почему в сортировке каждый элемент сравнивается с максимальным значением, а не с соседним? Я не могу этого понять.
Вот код:
var mas = [4, 24, 44, 65, 10, 100, 1, 44, 88, 98, 2, 124, 5555];
for (var i = 0; i < mas.length; i++) {
for (var j = i + 1; j < mas.length; j++) {
if (mas[j] > mas[i]) {
var swap = mas[i];
mas[i] = mas[j];
mas[j] = swap;
}
}
}
Допустим, циклы на первой итерации завершились и 4 с 24 поменялись местами. Массив выглядит так = [24, 4, 44, 65, …]. Далее цикл1 на стадии i = 1, т.е. имеет значение 4. Далее начинается цикл2, мы берем j = i +1, (j = 2), т.е. 44. Уловие выполняется: 44 > 4 и далее мы меняем ИХ местами. Получится (только в моей голове) массив [24, 44, 4, …]. На самом деле программа работает исправно и выдает правильный результат, т.е. она сравнивала 44 не с 4, а с 34. Объясните, как так?
Помогите разобраться с логикой программы. Где я ошибаюсь? Надеюсь, что понятно задал вопрос.