目次から探す
バブルソートのアルゴリズム
バブルソートは、隣り合う要素を比較して順番を入れ替えることを繰り返すことで、配列を昇順または降順に並び替えるアルゴリズムです。
以下では、バブルソートの基本的な仕組みとアルゴリズムの解説を行います。
バブルソートの基本的な仕組み
バブルソートでは、配列の先頭から隣り合う要素を比較し、大小関係に応じて入れ替えます。
この操作を配列の要素数-1回繰り返すことで、最大値または最小値が配列の末尾に移動します。
そして、残った要素に対して同様の操作を行い、次第に整列させていきます。
アルゴリズムの解説
- 配列の先頭から隣り合う要素を比較する。
- 左側の要素が右側の要素より大きい場合、両者を入れ替える。
- 配列の末尾まで比較・入れ替えを繰り返す。
- 1回の操作で最大値または最小値が配列の末尾に移動するため、操作回数を1減らす。
- 残った要素に対して同様の操作を繰り返す。
- 操作回数が0になるまで繰り返す。
バブルソートの実装
乱数の配列をバブルソートする手順は以下のようになります。
- 乱数を生成して配列に格納する。
- 生成した乱数の配列を表示する。
- バブルソートの関数を呼び出し、配列をソートする。
- ソート後の配列を表示する。
この手順に従って、乱数の配列をバブルソートすることができます。
サンプルコード
上記の手順に基づいた、乱数の配列をバブルソートするサンプルコードを以下に示します。
#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;
}
このサンプルコードでは、ユーザーに配列の要素数を入力してもらい、その要素数分の乱数を生成して配列に格納しています。
ソート前とソート後の配列を表示することで、バブルソートの結果を確認することができます。