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

目次から探す

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

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

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

バブルソートの基本的な仕組みは以下の通りです。

  1. 配列の先頭から隣り合う要素を比較します。
  2. 比較した要素が順序通りでない場合、要素を入れ替えます。
  3. 配列の末尾まで比較・入れ替えを繰り返します。
  4. 1回の繰り返しで最大または最小の要素が末尾に移動するため、次の繰り返しでは末尾を除いた範囲で同様の操作を行います。
  5. 全ての要素が順序通りになるまで、繰り返しを行います。

文字列の比較方法

バブルソートでは、文字列の比較方法が重要です。

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言語でのバブルソートの実装例と文字列の比較方法の実装例を紹介しました。

目次から探す