方法1: 基本的な実装
function selectionSort(arr) {
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
const temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
const array = [5, 3, 8, 4, 2];
const sortedArray = selectionSort(array);
console.log(sortedArray);
方法2: ES6のスワップ演算子を使った実装
function selectionSort(arr) {
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
}
return arr;
}
const array = [5, 3, 8, 4, 2];
const sortedArray = selectionSort(array);
console.log(sortedArray);
選択ソートは、平均的には比較回数がO(n^2)、交換回数がO(n)となるため、大きなデータセットでは効率的ではありません。より効率的なソートアルゴリズムとしては、クイックソートやマージソートなどがあります。