選択ソート | ソートアルゴリズム | アルゴリズムをはじめから

スポンサーリンク
スポンサーリンク

選択ソートアルゴリズムの解説

選択ソートとは?

選択ソートは、ソートの中でも比較的単純なアルゴリズムです。配列の中で最も小さな要素を選び、それを先頭の要素と入れ替えます。この操作を繰り返し、リスト全体がソートされるまで続けます。

選択ソートのステップ

  1. 配列の中で最小の要素を探します。
  2. 見つけた最小の要素を、配列の先頭の要素と入れ替えます。
  3. 次に、残りの要素から同様の手順を繰り返します。
  4. すべての要素がソートされるまで、この操作を続けます。

選択ソートのステップごとの変化

ステップ リストの状態 交換された要素
初期状態 [5, 2, 9, 1, 5, 6]
1 [1, 2, 9, 5, 5, 6] 5, 1
2 [1, 2, 9, 5, 5, 6]
3 [1, 2, 5, 9, 5, 6] 9, 5
4 [1, 2, 5, 5, 9, 6] 9, 5
5 [1, 2, 5, 5, 6, 9] 9, 6

選択ソートはどのように動いているか

5
2
9
1
5
6

選択ソートのJavaScript実装


// 選択ソートのJavaScript実装
function selectionSort(arr) {
    let 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;
            }
        }
        // 最小値とi番目の要素を入れ替え
        [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
        console.log(arr); // 途中経過を出力
    }
    return arr;
}

let array = [5, 2, 9, 1, 5, 6];
console.log("ソート前:", array);
console.log("ソート後:", selectionSort(array));

選択ソートのPython実装

# 選択ソートのPython実装
def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        # 最小値とi番目の要素を入れ替え
        arr[i], arr[min_index] = arr[min_index], arr[i]
        print(arr)  # 途中経過を出力
    return arr

array = [5, 2, 9, 1, 5, 6]
print("ソート前:", array)
print("ソート後:", selection_sort(array))

まとめ

選択ソートはシンプルなソートアルゴリズムの一つで、特に学習目的には優れた例です。しかし、大きなデータセットに対しては効率が良くないため、他のアルゴリズムに比べてパフォーマンスが低下することがあります。実際に実装することで、その動作や限界を理解することが重要です。