64,642
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <functional>
template <typename T>
void Swap(T *a, T *b) {
T tmp = *a;
*a = *b;
*b = tmp;
}
template <typename T>
int partition(T array[], int low, int high, const std::function<int(T, T)> &cmp) {
int i = low - 1;
T x = array[high];
for (int j = low; j < high; j++) {
if (cmp(array[j], x)) {
i++;
Swap(array[j], array[i]);
}
}
array[i + 1] = x;
return i + 1;
}
template <typename T>
void quicksort(T array[], int low, int high, const std::function<int(T, T)> &cmp) {
if (low < high) {
int mid = partition(array, low, high, cmp);
quicksort(array, low, mid - 1, cmp);
quicksort(array, mid + 1, high, cmp);
}
}
int main() {
std::cout << "Hello, World!" << std::endl;
int arr[] {5, 3, 9, 1, 6, 2};
quicksort(arr, 0, 5, [](int a, int b) -> int {
return a < b;
});
for(auto item: arr) {
std::cout << item << " ";
}
std::cout << std::endl;
return 0;
}