C stdlib qsort() 函数
定义和用法
qsort() 函数将数组中的元素按从小到大的顺序排序。
qsort() 函数定义在 <stdlib.h> 头文件中。
实例
对数组进行排序:
// 比较函数:
// 如果 a 大于 b,返回正数
// 如果 a 小于 b,返回负数
// 如果 a 等于 b,返回 0
int compare(const void *a, const void *b) {
int *valA = (int *)a;
int *valB = (int *)b;
return *valA - *valB;
}
int main() {
// 创建一个数组
int myArray[] = {20, 32, 5, 2, 24, 15};
int size = sizeof(myArray) / sizeof(myArray[0]);
// 对数组中的值进行排序
qsort(myArray, size, sizeof(myArray[0]), compare);
// 显示数组的值
for(int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
return 0;
}
语法
qsort(void * arr, size_t amount, size_t size, compare);
size_t 数据类型是一个非负整数。
参数
| 参数 | 描述 |
|---|---|
| arr | 必需。指定要排序的数组。 |
| amount | 必需。指定数组中的元素数量。 |
| size | 必需。指定数组中元素的大小(以字节为单位)。 |
| compare |
必需。指定一个用于比较数组中元素对的函数,以确定哪个元素更大。 该函数应具有以下结构,其中参数 a 和 b 是指向正在比较的数组中元素的指针: int myFunction(const void *a, const void *b) 该函数应在 a 大于 b 时返回正数,在 a 小于 b 时返回负数,在 a 等于 b 时返回零。 |