モダンJavaScript入門: バブルソートを用いた配列の並び替え

目次

  1. バブルソートとは
  2. アルゴリズムの説明
  3. コード例
  4. 応用例

バブルソートとは

バブルソートは、要素が正しい順序に並ぶまで隣接する要素を交換するソートアルゴリズムです。要素の比較と交換が繰り返されるため、効率性は低いですが、実装が比較的簡単です。

アルゴリズムの説明

バブルソートアルゴリズムは以下の通りです。

  1. 配列を先頭から順に走査します。
  2. 隣接する要素を比較し、順序が逆であれば交換します。
  3. 走査を繰り返し、要素の交換が行われなくなるまで続けます。

コード例

以下に、バブルソートのコード例を示します。

function bubbleSort(arr) {
  let len = arr.length;
  let swapped;
  do {
    swapped = false;
    for (let i = 0; i < len - 1; i++) {
      if (arr[i] > arr[i + 1]) {
        let temp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = temp;
        swapped = true;
      }
    }
  } while (swapped);
  return arr;
}

let array = [5, 3, 8, 4, 2];
console.log(bubbleSort(array)); // [2, 3, 4, 5, 8]

応用例

バブルソートは単純なソートアルゴリズムですが、応用例も存在します。以下に、応用例のコード3個を示します。

1. 文字列のソート

let strings = ["apple", "banana", "cherry", "date"];
console.log(bubbleSort(strings)); // ["apple", "banana", "cherry", "date"]

2. オブジェクトのソート

let objects = [
  { name: "John", age: 30 },
  { name: "Alice", age: 25 },
  { name: "Bob", age: 35 }
];
console.log(bubbleSort(objects)); // [{ name: "Alice", age: 25 }, { name: "Bob", age: 35 }, { name: "John", age: 30 }]

3. 日付のソート

let dates = [new Date("2022-01-01"), new Date("2021-01-01"), new Date("2023-01-01")];
console.log(bubbleSort(dates)); // [new Date("2021-01-01"), new Date("2022-01-01"), new Date("2023-01-01")]