コンテンツ
リスト内のアイテムのセットを注文することは、プログラミングで頻繁に行われる作業です。多くの場合、人間はこのタスクを直感的に実行できます。ただし、コンピュータプログラムはそれを完了するために正確な命令シーケンスに従う必要があり、そのシーケンスはアルゴリズムと呼ばれます。順序付けアルゴリズムは、まとまりのないアイテムのリストを所定の順序で配置するために使用される方法です。順序付け順序はキーによって決定されます。効率とパフォーマンスの点で異なる並べ替えアルゴリズムがいくつかあります。このタイプのいくつかの既知の重要なものには、バブルソート、選択ソート、挿入ソート、クイックソートがあります。
バブルソート
バブルソートは、アイテムのリスト全体が順番になるまで、順序が正しくない隣接要素を繰り返し交換します。このようにして、項目は値に応じてリスト内で変動し、最大の(昇順ソートの場合)は各反復の最後に終わりに行きます。
このアルゴリズムの主な利点は、その実装が簡単で知られていることです。さらに、バブルソートでは、一時的なストレージを使用せずに要素が場所を変更されるため、必要なスペースが最小限になります。主な欠点は、リストに多くのアイテムが含まれていると、良い結果が表示されないことです。これは、このタイプのソートでは、ソートされるn個の要素ごとにn²の処理ステップが必要になるためです。したがって、バブルソートは学術教育には適していますが、実際のアプリケーションには適していません。
選択ソート
選択ソートは、項目のリストを繰り返し検索し、一度に1つの要素を選択して、それをシーケンスの正しい位置に配置します。
選択ソートの主な利点は、短いリストでうまく機能することです。さらに、これは場所の順序付けアルゴリズムであるため、元のリストを保存するために必要なものを超える一時的な保存は必要ありません。主な欠点は、大きなリストでの効率が低いことです。バブルソートと同様に、n要素ごとにn²ステップ数が必要です。さらに、そのパフォーマンスは、並べ替え処理前のアイテムの最初の順序によって簡単に影響を受けます。このため、この選択タイプは、ランダムな順序の要素がほとんどないリストにのみ適しています。
挿入ソート
挿入ソートはリストを繰り返しスキャンし、毎回、無秩序なシーケンスのアイテムを正しい位置に挿入します。
挿入によるソートの主な利点は、小さなリストで優れたパフォーマンスを示すことに加えて、その単純さです。これは場所の順序付けアルゴリズムであるため、必要なスペースは最小限です。欠点は、他の並べ替えアルゴリズムと同じように機能しないことです。 n²ステップが機能する必要があるため、挿入ソートも大きなリストではうまく機能しません。ただし、項目数が少ないリストでは特に便利です。
クイックソート
クイックソートは、分割征服の原則に基づいて機能します。まず、ピボット要素に基づいてアイテムリストを2つのサブリストに分割します。最初のサブリストのすべての要素はピボットよりも小さくなるように配置され、2番目のサブリストのすべての要素はピボットよりも大きくなるように配置されます。リスト全体が編成されるまで、結果のサブリストに対して同じパーティション化および編成プロセスが繰り返し実行されます。
クイックソートは、アイテムの大きなリストで適切に機能するため、効率が大幅に向上するため、一部の人には最適なソートアルゴリズムと見なされています。現場で注文することにより、追加の保管スペースも必要ありません。それが示すわずかな不利な点は、その最悪のパフォーマンスが上記の他のアルゴリズムの平均パフォーマンスに似ていることです。ただし、この最悪のケースは非常にまれであることに注意することが重要です。より一般的には、クイックソートは、あらゆるサイズのリストを整理する最も効率的で広く使用されている方法を生成します。