【C言語】乱数の配列をバブルソートする方法を解説

目次から探す

バブルソートのアルゴリズム

バブルソートは、隣り合う要素を比較して順番を入れ替えることを繰り返すことで、配列を昇順または降順に並び替えるアルゴリズムです。

以下では、バブルソートの基本的な仕組みとアルゴリズムの解説を行います。

バブルソートの基本的な仕組み

バブルソートでは、配列の先頭から隣り合う要素を比較し、大小関係に応じて入れ替えます。

この操作を配列の要素数-1回繰り返すことで、最大値または最小値が配列の末尾に移動します。

そして、残った要素に対して同様の操作を行い、次第に整列させていきます。

アルゴリズムの解説

  1. 配列の先頭から隣り合う要素を比較する。
  2. 左側の要素が右側の要素より大きい場合、両者を入れ替える。
  3. 配列の末尾まで比較・入れ替えを繰り返す。
  4. 1回の操作で最大値または最小値が配列の末尾に移動するため、操作回数を1減らす。
  5. 残った要素に対して同様の操作を繰り返す。
  6. 操作回数が0になるまで繰り返す。

バブルソートの実装

乱数の配列をバブルソートする手順は以下のようになります。

  1. 乱数を生成して配列に格納する。
  2. 生成した乱数の配列を表示する。
  3. バブルソートの関数を呼び出し、配列をソートする。
  4. ソート後の配列を表示する。

この手順に従って、乱数の配列をバブルソートすることができます。

サンプルコード

上記の手順に基づいた、乱数の配列をバブルソートするサンプルコードを以下に示します。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bubbleSort(int arr[], int n) {
    // バブルソートの処理
    // ...
}
int main() {
    int n;
    printf("配列の要素数を入力してください: ");
    scanf("%d", &n);
    int arr[n];
    srand(time(NULL));
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 100; // 0から99までの乱数を生成
    }
    printf("ソート前の配列: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    bubbleSort(arr, n);
    printf("ソート後の配列: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

このサンプルコードでは、ユーザーに配列の要素数を入力してもらい、その要素数分の乱数を生成して配列に格納しています。

ソート前とソート後の配列を表示することで、バブルソートの結果を確認することができます。

目次から探す