var array = [5,3,4,1]
for(var x = 0; x < array.length; x++){
for(var y = array.length - 1; y >= x; y--){
if(array[x] > array[y]){
var temp = array[y];
array[y] = array[x];
array[x] = temp;
}
}
}
console.log(array);
//Output : [1,3,4,5]
Я понимаю, что петли предназначены для замены петель, по существу, заменяя два значения, если x больше y.Выполнение останавливается после первой итерации петли выхода
[1,3,4,5]
- результат, когда x = 0, но Почему ничего не меняется после x = 1 и т. Д.? Не следует ли запустить вторичный цикл для своих итераций и продолжать менять значения до тех пор, пока первый цикл не достигнет array.length
(4)?
EDIT: немного больше информации о том, где мой мыслительный процесс: Выходной сигнал [1,3,4,5] после первой итерации, но как насчет того, когда он выполняет итерацию до x = 1? В этот момент x [1] = 3, правильно? Оператор if терпит неудачу, когда y уменьшается с 5, до 4, до 3, но 3> 1, и поэтому я думаю, что выход будет изменен на [3,1,4,5]. В какой момент x итерации к x [2], который равен 4, и выход становится [4,3,1,5] и, наконец, x [3] = 5, где возможны дополнительные свопы
Что заставляет вас думать, что он не работает полностью? (В этом конкретном примере это не так, потому что массив упорядочен на самой первой итерации ...) – Terminus
Моя ошибка. Я знаю, что это работает полностью, я просто не понимаю, почему ничего не меняется после первой итерации. – 87born
Ничего не меняется, потому что ничего не передается в выражении if. Прочитайте некоторые учебные пособия по программированию, это будет происходить на ранней стадии. – Terminus