在C语言中,qsort
函数是用于对数组进行快速排序的标准库函数。要自定义qsort
的比较函数,你需要传递一个指向函数的指针作为参数,该函数应接受两个指向要比较的元素的指针,并返回一个整数来指示它们的顺序。
以下是一个自定义比较函数的示例,该函数按照降序比较两个整数:
#include <stdio.h>
#include <stdlib.h>
// 自定义比较函数,按降序比较两个整数
int compare(const void *a, const void *b) {
int int_a = *(int*)a;
int int_b = *(int*)b;
if (int_a > int_b) {
return -1;
} else if (int_a < int_b) {
return 1;
} else {
return 0;
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用自定义比较函数对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 打印排序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
在这个示例中,我们定义了一个名为compare
的比较函数,它接受两个指向整数的指针,并返回一个整数来指示它们的顺序。然后,我们在main
函数中使用qsort
函数对数组进行排序,并将自定义比较函数作为参数传递给它。最后,我们打印排序后的数组以验证结果。