目次から探す
バブルソートのアルゴリズム
バブルソートは、隣り合う要素を比較して必要に応じて入れ替えることで、配列を昇順または降順にソートするアルゴリズムです。
バブルソートの基本的な仕組み
バブルソートの基本的な仕組みは以下の通りです。
- 配列の先頭から隣り合う要素を比較します。
- 比較した要素が順序通りでない場合、要素を入れ替えます。
- 配列の末尾まで比較・入れ替えを繰り返します。
- 1回の繰り返しで最大または最小の要素が末尾に移動するため、次の繰り返しでは末尾を除いた範囲で同様の操作を行います。
- 全ての要素が順序通りになるまで、繰り返しを行います。
文字列の比較方法
バブルソートでは、文字列の比較方法が重要です。
C言語では、文字列を比較するためにstrcmp関数
を使用します。
strcmp関数
は、2つの文字列を辞書順に比較し、結果を整数値で返します。
返り値が0の場合は2つの文字列が等しいことを示し、負の値の場合は1つ目の文字列が2つ目の文字列よりも小さいことを示し、正の値の場合は1つ目の文字列が2つ目の文字列よりも大きいことを示します。
文字列の配列をバブルソートする手順
文字列の配列をバブルソートする手順は以下の通りです。
配列の要素を比較する
バブルソートでは、隣り合う要素を比較します。
文字列の場合は、strcmp関数
を使用して比較します。
比較結果に応じて要素の入れ替えを行います。
要素の入れ替え
比較した要素が順序通りでない場合、要素を入れ替えます。
文字列の場合は、strcpy関数
を使用して要素を入れ替えます。
ソートの繰り返し
配列の末尾まで比較・入れ替えを行った後、次の繰り返しでは末尾を除いた範囲で同様の操作を行います。
全ての要素が順序通りになるまで、繰り返しを行います。
バブルソートの実装例
以下に、C言語でのバブルソートの実装例と文字列の比較方法の実装例を示します。
C言語でのバブルソートの実装例
#include <stdio.h>
#include <string.h>
void bubbleSort(char arr[][100], int n) {
int i, j;
char temp[100];
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (strcmp(arr[j], arr[j+1]) > 0) {
strcpy(temp, arr[j]);
strcpy(arr[j], arr[j+1]);
strcpy(arr[j+1], temp);
}
}
}
}
int main() {
char arr[][100] = {"apple", "banana", "orange", "grape"};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
bubbleSort(arr, n);
printf("ソート後の配列:\n");
for (i = 0; i < n; i++) {
printf("%s\n", arr[i]);
}
return 0;
}
文字列の比較方法の実装例
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2);
if (result == 0) {
printf("str1とstr2は等しい\n");
} else if (result < 0) {
printf("str1はstr2よりも小さい\n");
} else {
printf("str1はstr2よりも大きい\n");
}
return 0;
}
バブルソートのアルゴリズムや文字列の比較方法、文字列の配列をバブルソートする手順、そしてC言語でのバブルソートの実装例と文字列の比較方法の実装例を紹介しました。