温馨提示×

如何自定义qsort的比较函数

小樊
81
2024-10-16 07:25:02
栏目: 编程语言

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

0