#include <iostream>
using namespace std;
// 快速排序函数
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
// 分割数组
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
swap(arr[i], arr[j]);
i++;
j--;
}
};
// 递归排序左半部分
if (left < j) {
quickSort(arr, left, j);
}
// 递归排序右半部分
if (i < right) {
quickSort(arr, i, right);
}
}
// 测试代码
int main() {
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int len = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, len - 1);
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
这是一个标准的快速排序实现,它使用递归来实现排序过程。在快速排序的主函数中,我们首先选择一个基准元素(pivot),然后将数组分为两部分,一部分包含所有小于基准元素的值,另一部分包含所有大于基准元素的值。然后,我们递归地对左右两部分进行排序,最终得到一个有序的数组。
注意,这里我们使用了 STL 中的 swap()
函数来交换数组中的元素。