いくつかの一般的な並べ替えアルゴリズムとその長所と短所

一般的な並べ替えアルゴリズムは次のとおりです。

  1. バブルソート: シーケンスのソートが完了するまで、ソート対象のシーケンスを繰り返し走査し、隣接する要素のサイズを比較し、交換します。時間計算量は O(n^2) であり、安定した並べ替えアルゴリズムです。

  2. 選択ソート: 各走査で最小の要素が検索され、ソートされたシーケンスの最後に配置されます。時間計算量は O(n^2) であり、安定した並べ替えアルゴリズムではありません。

  3. 挿入ソート (挿入ソート): ソートするシーケンスをトラバースし、ソートされたシーケンス内の適切な位置に現在の要素を挿入します。時間計算量は O(n^2) であり、安定した並べ替えアルゴリズムです。

  4. シェルソート: 挿入ソートの改良版。挿入ソートのためにシーケンスをいくつかのサブシーケンスに分割し、最後に別の挿入ソートを実行します。時間計算量は O(n log n) ~ O(n^2) であり、安定した並べ替えアルゴリズムではありません。

  5. ソートのマージ: シーケンスをいくつかのサブシーケンスに分割し、それらを再帰的にソートし、ソートされたサブシーケンスを最終的な順序付けされたシーケンスにマージします。時間計算量は O(n log n) であり、安定した並べ替えアルゴリズムです。

  6. クイックソート: 参照要素を選択し、参照要素より小さい要素を左側に配置し、参照要素より大きい要素を右側に配置して、左右の部分を再帰的に並べ替えます。時間計算量は O(n log n) であり、安定した並べ替えアルゴリズムではありません。

  7. ヒープソート: ソート対象のシーケンスを大きなルートヒープまたは小さなルートヒープに構築し、毎回先頭の要素と最後の要素を交換して、ヒープを再構築します。時間計算量は O(n log n) であり、安定した並べ替えアルゴリズムではありません。

メリットとデメリットは以下の通りです

アルゴリズム名 アドバンテージ 欠点がある
バブルソート 1. シンプルな実装、理解しやすくコードも簡単; 2. バブルソートは小さなデータセットをソートするのに適した選択肢です 1. 高い時間計算量、O(n^2)。2. 大量のデータをソートする効率が低い; 3. 配列が完全に順序付けされている場合でも、完全にソートする必要があります。
選択範囲の並べ替え 1. アルゴリズムのアイデアはシンプルで実装が簡単です; 2. 追加のメモリ空間を占有しません。 1. 高い時間計算量、O(n^2)。2. 実行時間は入力データの初期状態とは関係がありません。つまり、データが順序付けされているか不規則であるかに関係なく、同じ数の比較および移動操作が必要です。 3. すべての N ^ 2 のうち、交換の数が最も少ないため、ソートを選択します。データの移動に関しては、バブル ソートよりもわずかに有利です。ただし、データの移動に時間がかかる場合は、他のアルゴリズムを考慮する必要があります。
挿入ソート 1. シンプルな実装、理解とコーディングが簡単; 2. 小規模なデータの並べ替えの場合は、挿入並べ替えの方が効率的です; 3. 部分的に順序付けされた配列の並べ替えの場合、効率が高くなります 1. 大規模なアウトオブオーダー配列のソートでは、挿入ソートの効率は低く、時間計算量は O(n^2) です。2. 挿入ソートは安定したソートですが、1回の交換に3回の代入演算が必要となり、選択ソートに比べて交換回数が多く効率が悪くなります。
ヒルソート 1. 基本的に順序付けられたシーケンスを迅速にソートできる、挿入ソートに基づく改良されたアルゴリズム; 2. 追加の記憶領域を必要としないインプレースソートアルゴリズム; 3. 時間計算量の上限は O( n^ 2) ただし、実際の実行時間はそれより短くなります。 1. 時間計算量はインクリメンタル シーケンスの選択に依存しますが、インクリメンタル シーケンスの選択はそれほど簡単ではありません。2. これは不安定な並べ替えアルゴリズムであり、等しい要素の相対的な順序が変更されないことが保証されません。
マージソート 1. 等しい要素の相対的な順序が変わらないことを保証する、安定したソート アルゴリズムである; 2. 時間計算量が安定しており、O(nlogn); 3. 大量のデータのソートに適している 1. 一時配列を保存するには追加のストレージスペースが必要です。2. 再帰呼び出しが必要であり、一定量のシステム スタック スペースを消費します; 3. 配列が完全に順序付けされた場合でも、完全にソートする必要があります。
クイックソート 1. 空間計算量が低く、再帰的プロセスを実現するために必要なスタックは 1 つだけです; 2. 時間計算量が優れており、最良の場合は O(nlogn)、平均的な場合は O(nlogn)、および O(nlogn) ) 最悪の場合 n^2); 3. ランダムに分散されたデータの場合はソートの効果が高くなりますが、同一の要素が多数含まれるデータの場合はソートの効果は低くなります。 1. 並べ替え処理中に要素の位置が変化するため、不安定です。2. 最悪の場合、時間計算量は O(n^2) です。データがソートされている場合、クイック ソートの効率は大幅に低下します。3. ソートの効果は、ランダムに分散されたデータに対しては優れていますが、要素の同一データの順序付けが多数あると、効果が低下します。
ヒープソート 1. 並べ替えプロセス中に要素の位置が変わらないため、安定しています。 2. 時間計算量は安定しており、最良、平均、最悪の場合の時間計算量は O(nlogn) です。 3. ランダム分散の場合また、同じ要素を持つデータが多数あると、並べ替えの効果が高くなります。 1. 空間の複雑さが高く、データを保存するには完全なバイナリ ツリーを確立する必要があるため、大量のメモリ空間を占有する必要があります。2. 大量のデータの場合、ヒープソートでは複数回のデータ交換が必要となり効率が低いため、大規模データのソートには適していません。

おすすめ

転載: blog.csdn.net/qq_42133976/article/details/130417604
おすすめ