要自定義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
。