在 C 语言中, qsort 函数用于对数组进行快速排序。
qsort 函数的声明在 <stdlib.h> 头文件中,其函数原型为:
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
参数说明:
- base :要排序的数组的起始地址。
- nmemb :数组中的元素数量。
- size :每个元素的大小(以字节为单位)。
- compar :指向比较函数的指针,用于确定排序的顺序。
比较函数应具有以下形式:
int compar(const void *a, const void *b)
{
// 根据比较规则返回负数、0 或正数
// 负数表示 a 排在 b 之前
// 0 表示 a 和 b 相等
// 正数表示 a 排在 b 之后
}
以下是一个使用 qsort 对整数数组进行排序的示例:
c 复制
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于按升序排列整数
int intCompare(const void *a, const void *b)
{
int *pa = (int *)a;
int *pb = (int *)b;
return (*pa - *pb);
}
int main()
{
int arr[] = {9, 5, 7, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
qsort(arr, n, sizeof(arr[0]), intCompare);
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
在上述示例中, intCompare 函数定义了整数的比较规则, qsort 函数根据这个规则对数组进行排序。