Я проверил свой код с массивами, которые имеют не повторяющиеся значения, и кажется, что он работает нормально.Когда у меня есть дубликаты, это не работает.
Это то, что я имею до сих пор.Я думаю, что строка кода, где я нахожу минимальное значение нарезанного массива, вызывает у меня проблемы.
function selectionSort(array) {
for (let i = 0; i < array.length; i++) {
let min = Math.min(...array.slice(i));
let indexMin = array.indexOf(min)
array.splice(indexMin, 1)
array.splice(i,0,min);
}
return array;
}
console.log(selectionSort([3, 0, -5, -5]));
С тестовым массивом [3,0, -5, -5] в первой итерации цикла min равен -5, а indexMin равен 2После сращивания массива я получаю [3,0, -5].Когда я снова склеиваю его (чтобы вставить значение в начало массива), я получаю [-5,3,0, -5], как и ожидалось.Во второй итерации я ожидал бы, что min будет -5 в индексе 3 ... но когда я console.log min, он говорит, что это -5 в индексе 0. Я указал, что хочу найти min из(... array.slice (1)), так почему он устанавливает мин в -5 с индексом 0?