JavaScriptでの選択ソートの実装方法


方法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)となるため、大きなデータセットでは効率的ではありません。より効率的なソートアルゴリズムとしては、クイックソートやマージソートなどがあります。