如何自定义c++快排函数的比较规则

   2024-10-01 4880
核心提示:要自定义C++快速排序(Quick Sort)函数的比较规则,你需要创建一个自定义的比较函数,并将其作为参数传递给排序函数#includeios

要自定义C++快速排序(Quick Sort)函数的比较规则,你需要创建一个自定义的比较函数,并将其作为参数传递给排序函数

#include<iostream>#include<vector>#include<algorithm>// 自定义比较函数bool customCompare(int a, int b) {    // 这里可以定义你自己的比较规则    // 例如,按照绝对值从小到大排序    return std::abs(a) < std::abs(b);}// 快速排序函数,接受自定义比较函数作为参数template<typename T, typename Compare>void quickSort(std::vector<T>& arr, int low, int high, Compare comp) {    if (low >= high) {        return;    }    int pivotIndex = low + (high - low) / 2;    T pivot = arr[pivotIndex];    int i = low, j = high;    while (i <= j) {        while (comp(arr[i], pivot)) {            i++;        }        while (comp(pivot, arr[j])) {            j--;        }        if (i <= j) {            std::swap(arr[i], arr[j]);            i++;            j--;        }    }    quickSort(arr, low, j, comp);    quickSort(arr, i, high, comp);}int main() {    std::vector<int> arr = {-5, 3, 2, 8, -1, 0, 3};    // 使用自定义比较函数进行排序    quickSort(arr, 0, arr.size() - 1, customCompare);    for (int num : arr) {        std::cout<< num << " ";    }    std::cout<< std::endl;    return 0;}

在这个示例中,我们定义了一个名为customCompare的自定义比较函数,该函数按照绝对值从小到大对整数进行排序。然后,我们修改了快速排序函数,使其接受一个比较函数作为参数,并在排序过程中使用这个自定义比较函数。最后,在main函数中,我们调用了quickSort函数,并传入了自定义比较函数customCompare

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号