挿入ソートとバブルソートアルゴリズム
1. 序章
このチュートリアルでは、挿入ソートアルゴリズムとバブルソートアルゴリズムの類似点と相違点について学習します。これらのアルゴリズムを比較して、長所と短所をよりよく理解します。
2. 概要
まず、両方のアルゴリズムの動作原理を覚えておきましょう。
2.1. 挿入ソート
名前が示すように、挿入ソートで配列要素を適切な位置に1つずつ挿入します。
3回目の反復では、初期要素が並べ替えられます。 ソートされた部分の中にth要素を配置し、それを拡張します。
2.2. バブルソート
バブルソートでは、隣接する要素を比較し、必要に応じてそれらを交換します。 3回目の反復の後、最後の要素がソートされます。
3. 挿入ソートと バブルソート
まず、アルゴリズムの基本的なプロパティを比較してみましょう。
どちらのアルゴリズムも比較ソートクラスに属します。したがって、各要素の場所は比較に基づいて決定されます。
これらは安定したソートアルゴリズムです。したがって、ソートプロセス中に同じ値を持つキーを交換することはありません。 その結果、このような要素の最初の順序を最後に保持します。
アルゴリズム間の主な違いはそれらの方法にあります。両方のアルゴリズムは要素を比較してそれらの順序を見つけます。 しかし、3回目の反復で、挿入ソートアルゴリズムは、3番目の要素を最初の要素と比較します。 それどころか、各反復で、バブルソートアルゴリズムは隣接する要素を比較して交換します。
両方のアルゴリズムの時間複雑さはです。 したがって、並べ替え操作を完了するために必要な時間は2次式です。
同様に、両方のアルゴリズムの実行時の複雑さの最良および平均は同じです。
さらに、どちらもスペースの複雑さは。です。 したがって、ソート操作を実行するためにアルゴリズムが必要とする余分なスペースは、入力サイズに比例しません。 両方のアルゴリズムが適切に実行されるため、これは期待される結果です。
複雑さに関しては、両方のアルゴリズムは同じように動作します。
すでに述べたように、挿入ソートとバブルソートのアルゴリズムは異なる動作をします。 反復ごとに、挿入ソートは、配列の先頭にある、すでにソートされている要素の中からth要素の適切な場所を見つけます。 逆に、バブルソートは、各反復で隣接する要素を比較して交換します。
その結果、バブルソートは挿入ソートよりも多くのスワップ操作を実行します。スワップの数が多いと、バブルソートアルゴリズムの実行時間が長くなります。 どちらのアルゴリズムも同じ複雑さを持っていますが、ランダムリストでソートされる要素の数が増えるにつれて、実行時間の違いは大きくなります。
平均して、バブルソートは挿入ソートに比べてパフォーマンスが低くなります。スワップの数が多いため、2倍の書き込み操作と2倍のキャッシュミスが発生すると予想されます。 したがって、通常の並べ替えジョブにはこのアルゴリズムは適していません。
それでも、バブルソートアルゴリズムはコンピュータグラフィックスに適しています。 小さなエラーを探している場合や、入力データをほぼ並べ替えている場合に適しています。
全体として、挿入ソートはほとんどの場合より優れたパフォーマンスを発揮します。その結果、教科書や実生活でより人気があります。
4. 結論
この記事では、挿入ソートとバブルソートの2つの基本的なソートアルゴリズムを比較しました。
これらは両方とも、よく知られている比較ベースのインプレースの安定したソートアルゴリズムです。 どちらのアルゴリズムも理解と実装が簡単です。
どちらも実行時の複雑さは似ています。 ただし、データセットが大きい場合、バブルソートアルゴリズムは遅くなります。