「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 選択ソートアルゴリズム

選択ソートアルゴリズム

2024 年 11 月 7 日に公開
ブラウズ:978

Selection Sort Algorithm

選択ソートとは何ですか?

選択並べ替えアルゴリズムは、配列を並べ替えられた部分と並べ替えられていない部分の 2 つの部分に分割します。最初は、ソートされた部分は空で、ソートされていない部分にはすべての要素が含まれています。このアルゴリズムは、未ソート部分から最小 (またはソート順序によっては最大) の要素を見つけて、それを未ソート部分の最初の要素と交換することによって機能します。このプロセスは、配列全体がソートされるまで続きます。

アルゴリズムのステップ

  1. 配列内の最初の要素から開始し、それが最小であると仮定します。
  2. この要素を配列内の他の要素と比較します。
  3. より小さい要素を見つけた場合は、それを最初の要素と交換します。
  4. 配列内の次の要素に移動し、ソートされていない残りの要素に対してこのプロセスを繰り返します。
  5. 配列全体がソートされるまでこのプロセスを続けます。
#Suppose we have the following array:

arr = [64, 25, 12, 22, 11]

パス 1:

  • インデックス 0 と配列の残りの部分の間の最小要素は 11 です。
  • 64 と 11 を交換します。

最初のパス後の配列: [11, 25, 12, 22, 64]

パス 2:

  • 次に、インデックス 1 から始まる部分配列に注目します。25、12、22、64 の間の最小要素は 12 です。
  • 25 と 12 を交換します。

2 回目のパス後の配列: [11, 12, 25, 22, 64]

パス 3:

  • 25、22、64 の間の最小要素は 22 です。
  • 25 と 22 を交換します。

3 回目のパス後の配列: [11, 12, 22, 25, 64]

パス 4:

  • サブ配列には 25、64 が含まれています。それらはすでに順序が整っているため、交換する必要はありません。

最終的にソートされた配列: [11, 12, 22, 25, 64]

def selection_sort(arr):
    # Traverse through all array elements
    for i in range(len(arr)):
        # Find the minimum element in the remaining unsorted part
        min_index = i
        for j in range(i 1, len(arr)):
            if arr[j] 



ソートされた配列: [11, 12, 22, 25, 64]

選択ソートの時間計算量:

  • ベストケース: O(n²)

  • 平均ケース: O(n²)

  • 最悪の場合: O(n²)

選択並べ替えは小さなデータセットに対しては良好に実行されますが、時間計算量が O(n²) であるため、より大きな配列には理想的ではありません。ただし、実装は簡単で、Selection Sort が導入されているため (追加のメモリは必要ありません)、メモリが懸念される場合に役立ちます。

メリットとデメリット

利点:

  • 理解して実装するのが簡単です。

  • 小さなリストではうまく機能します。

  • 配列を所定の位置でソートするため、追加のメモリは必要ありません。

欠点:

  • O(n²)時間の複雑さのため、大規模なデータセットの場合は非効率的です。

  • これは安定した並べ替えアルゴリズムではありません。つまり、等しい要素が互いに対する相対的な順序を維持できない可能性があります。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/shubham_kharche_05/selection-sort-algorithm-2g63?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3