
Сортировка выбора — это алгоритм сортировки со сложностью со временем O(n2). Он работает очень медленно на больших наборах данных.
Как работает сортировка выборки?
Сортировка выбора начинается с выбора минимального элемента и сравнивает его с несортированным массивом.
Образец :
1.) [ 4,3,5,2 ]
- Сортировка выбирает 4 в качестве минимального элемента и начинает сравнивать его с оставшейся частью массива, если какой-либо элемент меньше 4, то нам нужно его поменять.
2.) [ 2,3,5,4 ].
- После замены он выбирает 3 в качестве минимального элемента и начинает сравнивать с оставшейся частью массива нет элемента, который меньше, чем 3, поэтому мы переходим к следующему элементу, который является 5.
- Теперь 5 является минимальным элементом, но мы находим элемент 4, который меньше, чем 5, поэтому мы меняем его.
Массив с окончательной сортировкой [2,3,4,5 ]
До сих пор у вас есть некоторые значения, так что давайте реализуем алгоритм сортировки выбора.
function selectionSort(arr){return arr }
Теперь нам нужно два цикла, один для выбора минимального элемента, а второй сравнивает его с оставшейся частью несортированного массива и обновляет минимальный элемент.
function selectionSort(arr) { for (var i = 0; i < arr.length; i++) {let min = i; // хранение индекса минимального элемента
for (var j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j; // обновление индекса минимального элемента
}
}
}
return arr
}
Последний шаг нам нужно поменять местами.
function selectionSort(arr) { for (var i = 0; i < arr.length; i++) {let min = i; // хранение индекса минимального элемента
for (var j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[ j ]) {
min = j; // обновление индекса минимального элемента
}
} if (i !== min) {
let temp = arr[ i ];
arr[ i ] = arr[min];
arr[min] = temp;
}
}
return arr
}
Можно даже использовать разрушение массива для замены элементов.
function selectionSort(arr) { for (var i = 0; i < arr.length; i++) {let min = i; // хранение индекса минимального элемента
for (var j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j; // обновление индекса минимального элемента
}
} if (i !== min) {
[arr[ i ],arr[min]]= [arr[min],arr[ i ]];
}
}
return arr
}
Вторая реализация с использованием метода map
function selectionSort(arr, length = arr.length) { arr.map((e, i) => {let min = i; // хранение индекса минимального элемента
for (let j = i + 1; j < length; j++) {
if (arr[min] > arr[j]) {
min = j; // обновление индекса минимального элемента
}
} if (i !== min) {
[arr[ i ],arr[min]]= [arr[min],arr[ i ]]; // замена
}
})
return arr
}
console.log(selectionSort([3,1,5,0,-4,44,9,20]));
//[-4,0,1,3,5,9,20,44]Редактор: AndreyEx
Поделиться в соц. сетях: