Как стать автором
Обновить

Комментарии 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;
}
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.