Комментарии 2
Спасибо за статью!
Код можно и под спойлеры)
Здравствуйте!
Извиняюсь, но должна обратить внимание, что у вас несколько ошибок в реализации сортировки выбором.
1. В функции findSmallest вы возвращаете индекс элемента, а потом используете эту функцию, ожидая значение наименьшего элемента.
2. В функции selectionSort перебираете массив через цикл for, но в теле цикла изменяете перебираемый массив, из-за чего в процессе теряются элементы массива, и в результате вернётся отсортированный массив, в котором не будет хватать значительной части элементов исходного массива.
3. И ещё вы пушите в отсортированный массив не сами элементы массива, а массивы, содержащие данные элементы, и в итоге получаете многомерный массив.
Я бы предложила такой вариант реализации:
function findSmallest(arr) {
let smallest = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < smallest) {
smallest = arr[i];
}
}
return smallest;
}
function selectionSort(arr) {
newArr = [];
while (arr.length > 0) {
smallest = findSmallest(arr);
newArr.push(...arr.splice(arr.indexOf(smallest), 1));
}
return newArr;
}
Конспект книги «Грокаем алгоритмы» Адитья Бхаргава