c++

c++ qsort如何自定义比较函数

小樊
81
2024-11-25 06:41:34
栏目: 编程语言

在C++中,qsort函数允许你使用自定义的比较函数来对数组进行排序。要使用自定义比较函数,你需要传递一个指向该函数的指针作为参数。比较函数应该接受两个参数,这两个参数分别表示要比较的两个元素。如果比较函数返回一个负数,那么第一个元素将排在第二个元素之前;如果返回0,那么两个元素相等;如果返回一个正数,那么第一个元素将排在第二个元素之后。

以下是一个使用自定义比较函数的示例:

#include <iostream>
#include <algorithm>

// 自定义比较函数
int compare(const void *a, const void *b) {
    int num1 = *(int *)a;
    int num2 = *(int *)b;

    // 如果num1小于num2,返回负数
    if (num1 < num2) {
        return -1;
    }
    // 如果num1等于num2,返回0
    else if (num1 == num2) {
        return 0;
    }
    // 如果num1大于num2,返回正数
    else {
        return 1;
    }
}

int main() {
    int arr[] = {5, 3, 8, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);

    // 使用自定义比较函数对数组进行排序
    qsort(arr, n, sizeof(int), compare);

    // 输出排序后的数组
    for (int i = 0; i < n; i++) {
        std::cout << arr[i] << " ";
    }

    return 0;
}

在这个示例中,我们定义了一个名为compare的自定义比较函数,用于比较两个整数。然后,我们使用qsort函数对整数数组arr进行排序,并将compare函数作为参数传递给它。最后,我们输出排序后的数组。

0
看了该问题的人还看了