如何自定义qsort的比较函数

avatar
作者
筋斗云
阅读量:0

在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函数对数组进行排序,并将自定义比较函数作为参数传递给它。最后,我们打印排序后的数组以验证结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!