C言語のソート関数の利用方法

C言語のソート関数には複数種類ありますが、最も一般的な方法は標準ライブラリの関数qsort()を使用することです。

qsort()関数のプロトタイプは次の通りです。

void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));

ちなみに、以下がパラメーターの説明です。

  1. 配列の先頭の要素を指し示すポインタ。
  2. nmemb:配列中の要素数
  3. サイズ:各要素のサイズ(バイト単位)。
  4. compar: 指定元素顺序的比較関数のポインタ

compar 関数のプロトタイプ:

int compar(const void *a, const void *b);

パラメータaとbは比較する2つの要素のポインタで、関数の戻り値は要素間の関係を示す

  1. 負の値を返す:aをbの直前に配置することを表す。
  2. 0を返す。aとbが等しいことを示す。
  3. 正値を返します。aがbより後に来るべきであることを表す。

配列qsort()を使用して整数の配列を並べ替えるサンプルを示します。

#include <stdio.h>
#include <stdlib.h>
// 比较函数
int compare(const void *a, const void *b) {
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
} else {
return 0;
}
}
int main() {
int arr[] = {5, 2, 8, 1, 4};
int size = sizeof(arr) / sizeof(arr[0]);
// 使用qsort函数进行排序
qsort(arr, size, sizeof(int), compare);
// 输出排序后的数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}

上のコードでは、まず比較関数compare()が定義され、次にmain()関数で整数配列arrが宣言され、qsort()関数で整列されます。最後に、繰り返し処理を使用して整列後の配列が出力されます。

qsort()関数の比較関数を適切に実装して、ソートの正確性を確保する必要があります。

bannerAds