Я изучаю сортировку вставками, и я заметил, что мой код работает, только когда я использую переменную (num) для сравнения со значением myArray[j]
.
Меня смущает вопрос, почему myarray [i] не работает, поскольку для num установлено значение myarray [i] и поскольку myarray [j] вложено в цикл, значение i не изменяется. Так почему же метод работает правильно, только если я использую (num) для сравнения?
const myArray = [3,1,4,8,2,7,3,23,43,21,46,23,30,49,50,12,44,233,492,32];
const insertionSort = (myArray) => {
for (let i = 1;i<myArray.length;i++){
let num = myArray[i];
j = i-1
while (j>=0 && myArray[j]>num){
myArray[j+1] = myArray[j]
j--
}
myArray[j+1] = num
}
}
// correctly outputs [ 1, 2, 3, 3, 4, 7, 8, 12, 21, 23, 23, 30, 32, 43, 44, 46, 49, 50, 233, 492 ]
const insertionSort = (myArray) => {
for (let i = 1;i<myArray.length;i++){
let num = myArray[i];
j = i-1
while (j>=0 && myArray[j]>myArray[i]){
myArray[j+1] = myArray[j]
j--
}
myArray[j+1] = num
}
}
// incorrectly outputs [ 1, 3, 4, 2, 7, 3, 8, 23, 21, 43, 23, 30, 46, 49, 12, 44, 50, 233, 32, 492 ]