選択並べ替えアルゴリズムは、配列を並べ替えられた部分と並べ替えられていない部分の 2 つの部分に分割します。最初は、ソートされた部分は空で、ソートされていない部分にはすべての要素が含まれています。このアルゴリズムは、未ソート部分から最小 (またはソート順序によっては最大) の要素を見つけて、それを未ソート部分の最初の要素と交換することによって機能します。このプロセスは、配列全体がソートされるまで続きます。
#Suppose we have the following array: arr = [64, 25, 12, 22, 11]
最初のパス後の配列: [11, 25, 12, 22, 64]
2 回目のパス後の配列: [11, 12, 25, 22, 64]
3 回目のパス後の配列: [11, 12, 22, 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] < arr[min_index]: min_index = j # Swap the found minimum element with the first element of the unsorted part arr[i], arr[min_index] = arr[min_index], arr[i] # Example usage arr = [64, 25, 12, 22, 11] selection_sort(arr) print("Sorted array:", arr)
ソートされた配列: [11, 12, 22, 25, 64]
最良のケース: O(n²)
平均ケース: O(n²)
最悪の場合: O(n²)
選択並べ替えは小さなデータセットに対しては良好に機能しますが、時間計算量が O(n²) であるため、大きな配列には理想的ではありません。ただし、実装は簡単で、選択並べ替えが適切に行われる (追加のメモリを必要としない) ため、メモリが懸念される場合に役立ちます。
利点:
理解と実装が簡単です。
小さなリストでは良好なパフォーマンスを発揮します。
配列を適切にソートするため、追加のメモリは必要ありません。
欠点:
時間計算量が O(n²) であるため、大規模なデータセットの場合は非効率です。
これは安定した並べ替えアルゴリズムではないため、等しい要素が互いに対する相対的な順序を維持できない可能性があります。
以上が選択ソートアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。