C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++における挿入ソートの時間計算量をわかりやすく解説

挿入ソートの時間計算量とは?

時間計算量とは、入力データの量を関数としたときに、一連のコードやアルゴリズムが処理・実行されるのにかかる時間のことを指します。

挿入ソートの場合、最良ケースでは O(n)(ビッグオー・オブ・エヌ)のオーダーになります。一方、平均ケースおよび最悪ケースでは O(n2) のオーダーとなります。

配列 6, 5, 8, 7, 10, 9 …(i と i-1 が入れ替わった形)に挿入ソートを適用した場合の時間計算量は?

このような配列をソートする場合の時間計算量は O(n) です。この配列を詳しく観察すると、隣接する要素同士のペアがすべて元の位置から入れ替わっていることがわかります。つまり、1番目と2番目の要素が入れ替わり、3番目と4番目の要素が入れ替わり、以降も同様のパターンが続いています。そのため、ソート処理では各要素に対してわずか1回の操作を n 回繰り返すだけで整列が完了します。

挿入ソートの定義と実装コード

挿入ソートとは、ソート済みの配列の中で各要素を適切な位置へ挿入していくことで、データ構造全体を整列させるソートアルゴリズムです。

以下のコードは、挿入ソートの関数を実装したものです。

サンプルコード

void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++){
        int element = arr[i];
        int j = i-1;
        while (j >= 0 && arr[j] > element){
            arr[j+1] = arr[j];
            j = j-1;
        }
        arr[j+1] = element;
    }
}

この実装では、配列の2番目の要素から順に取り出し、それより前のソート済み部分と比較しながら適切な位置へ挿入していきます。外側のループが n 回、内側の while ループが要素の移動回数に応じて実行されるため、入力データの並び方によって計算量が O(n) から O(n2) まで変化します。

  1. C++で挿入ソートを実装する方法|アルゴリズムとサンプルコードを徹底解説

    挿入ソートは、トランプの手札を並べ替えるときの動きに似ているソートアルゴリズムです。カードを整理するときと同じように、データセットから1つの要素を取り出し、その要素を挿入できる適切な位置を作るために他の要素をずらしてから、元の位置に戻すという手順を繰り返します。挿入ソートの計算量時間計算量:最良ケースは O(n)、平均ケースおよび最悪ケースは O(n²)空間計算量:O(1)入力 − ソート前のリスト:9 45 23 71 80 55 出力 − ソート後の配列:9 23 45 55 71 80アルゴリズムinsertionSort(array, size)入力:データの配列と、配列内の要素の総数

  2. C#で学ぶ挿入ソート(Insertion Sort)の基本と実装方法

    挿入ソートとは挿入ソート(Insertion Sort)は、配列から要素を1つずつ取り出し、その要素を配列内の正しい位置に挿入していくソートアルゴリズムです。この処理を繰り返すことで、最終的に配列全体が昇順に並べ替えられます。トランプの手札を整理するイメージに近く、直感的に理解しやすいのが特徴です。以下は、C#で挿入ソートを実装したサンプルプログラムです。サンプルコードusing System; namespace InsertionSortDemo { class Example { static void Main(string[] args) {