動的配列を使ったバブルソート

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ でバブルソート手法を実装するアルゴリズムを書く方法を学びます。バブルソートは、最も一般的で単純なソート手法の 1 つで、配列内の 2 つの隣接要素を比較し、正しく並べられていない場合にそれらの位置を交換します。

必要な変数とヘッダーファイルを宣言する

以下のコマンドを使用して、~/project ディレクトリに新しいファイル main.cpp を作成します。

touch ~/project/main.cpp

まず、プログラムに必要な変数とヘッダーファイルを宣言します。このステップでは、ヘッダーファイル iostream を含め、名前空間 std を定義します。

#include<iostream>
using namespace std;

汎用的なバブルソートアルゴリズムを実装する関数を宣言する

ここでは、C++ プログラムで「bubble_sort」という関数を宣言します。この関数は、ソート対象の配列と配列のサイズを受け取ります。この関数には、for ループ、交換、および if/else 文を使ったバブルソート手法の実装が含まれます。

int bubble_sort(int n,int array[]){
    int temp;
    for(int i=0;i<n-1;i++){
        for(int j=0;j<n-i-1;j--){
            if(array[j]>array[j+1]){
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
    }
return 0;
}

最適化されたバブルソートアルゴリズムを実装する関数を宣言する

最適化されたバブルソートでは、各パスで要素の交換が行われたかどうかを確認します。最後のパスで交換が行われなかった場合、配列がソートされていることがわかります。このステップでは、最適化されたバブルソートアルゴリズムを実装するための「bubble_sort」関数を実装します。この関数は、ソート対象の配列と配列のサイズを受け取ります。

int bubble_sort(int n,int array[]){
    int temp, flag;
    for(int i=0;i<n-1;i++){
        flag = 0;
        for(int j=0;j<n-i-1;j++){
            if(array[j]>array[j+1]){
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
                flag=1;
            }
        }
        if(flag==0){
            break;
        }
    }
    return 0;
}

メイン関数を定義する

ここでは、メイン関数を定義します。この関数では、ソート対象の配列とそのサイズを宣言します。このステップでは、また、関数「bubble_sort」を呼び出して配列を昇順にソートします。

int main(){

    int arr[]={5,6,9,2,3};
    int n = sizeof(arr)/(sizeof(arr[0]));
    bubble_sort(n,arr);
    cout<<"Elements after sorting of the array:- "<<endl;
    for(int i=0;i<n;i++){
        cout<<arr[i]<<" ";
    }
    return 0;
}

コードをコンパイルして実行する

このステップでは、Ubuntu システムのターミナルでコードをコンパイルして実行します。コードをコンパイルするには、次のコマンドを入力します。

g++ ~/project/main.cpp -o main

コードを実行するには、次のコマンドを入力します。

./main

まとめ

この実験では、C++ で動的配列を使用してバブルソートを実装する方法をうまく学びました。また、一部の選択されたが効率的な配列に対して効果的に機能する最適化されたバブルソート手法についても学びました。上記のチュートリアルに従えば、C++ の動的配列を使用して配列を昇順または降順にソートするためのバブルソート手法を実装できます。