動的配列を用いた挿入ソート

C++C++Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、C++ の動的配列を使って挿入ソートアルゴリズムを実装する方法を学びます。このアルゴリズムは、単純なソートアルゴリズムで、リストをソート済みと未ソートの 2 つの部分に分割し、その後、未ソートのリストの各要素をソート済みのリストの適切な位置に挿入することで動作します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/AdvancedConceptsGroup(["Advanced Concepts"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/BasicsGroup -.-> cpp/arrays("Arrays") cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/ControlFlowGroup -.-> cpp/while_loop("While Loop") cpp/AdvancedConceptsGroup -.-> cpp/pointers("Pointers") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") subgraph Lab Skills cpp/operators -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/arrays -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/for_loop -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/while_loop -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/pointers -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/output -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/user_input -.-> lab-96119{{"動的配列を用いた挿入ソート"}} cpp/files -.-> lab-96119{{"動的配列を用いた挿入ソート"}} end

動的配列の作成

まず、ユーザーによって決定されるサイズの整数型の動的配列を作成し、1 から 100 までの乱数で埋めます。

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int *arr;
    int size, i;

    cout << "Enter the size of the array: ";
    cin >> size;

    // 動的配列を作成
    arr = new int[size];

    // 配列を 1 から 100 までの乱数で埋める
    for(i=0; i<size; i++) {
        arr[i] = rand() % 100 + 1;
    }

未ソートの配列を表示する

次に、未ソートの配列の内容をユーザーに表示します。

    // 未ソートの配列を表示
    cout << "Unsorted array: ";
    for(i=0; i<size; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

挿入ソートアルゴリズムの実装

次に、昇順に配列をソートする挿入ソートアルゴリズムを実装します。

    // 挿入ソート
    int j, temp;
    for(i=1; i<size; i++) {
        temp = arr[i];
        j = i - 1;
        while(j>=0 && arr[j]>temp) {
            arr[j+1] = arr[j];
            j--;
        }
        arr[j+1] = temp;
    }

ソート済みの配列を表示する

ソート済みの配列の内容をユーザーに表示します。

    // ソート済みの配列を表示
    cout << "Sorted array: ";
    for(i=0; i<size; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

メモリの解放

最後に、動的配列によって使用されるメモリを解放します。

    // メモリを解放
    delete [] arr;

    return 0;
}

プログラムをコンパイルして実行する

ファイルを ~/project ディレクトリに「sort.cpp」として保存します。

ターミナルでプログラムをコンパイルして実行します:

$ cd ~/project
$ g++ sort.cpp -o sort
$./sort

まとめ

この実験では、C++ で動的配列を使って挿入ソートアルゴリズムを実装する方法を学びました。ユーザーによって決定されるサイズの動的配列を作成し、それにランダムな整数を格納し、挿入ソートアルゴリズムを実装し、最後にソート済みの配列をユーザーに表示しました。また、動的配列によって使用されるメモリを解放する方法も学びました。