阅读量:0
要自定义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
。