📅  最后修改于: 2023-12-03 14:56:20.781000             🧑  作者: Mango
#include <iostream>
using namespace std;
// 快速排序函数
void quickSort(int arr[], int left, int right) {
if (left >= right) {
return;
}
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) {
// 交换arr[i]和arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
// 递归调用快速排序函数
quickSort(arr, left, j);
quickSort(arr, i, right);
}
int main() {
int arr[] = { 9, 2, 5, 1, 7, 4, 8, 3, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "原始数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
quickSort(arr, 0, n - 1);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
这段 C++ 代码是一个用于快速排序的示例。快速排序是一种高效的排序算法,它通过选择一个"基准值",将数组划分为两部分,并对每部分递归地进行排序,直到整个数组有序。
代码中的 quickSort
函数实现了快速排序算法。它接受一个整型数组 arr
、左边界 left
和右边界 right
作为参数。函数首先选择中间元素作为基准值,然后使用双指针法将数组划分为两部分,左边部分的元素都小于基准值,右边部分的元素都大于基准值。接下来,函数使用递归调用对左右两边的子数组进行排序,直到子数组长度为1或0时停止递归。
在 main
函数中,创建一个包含9个元素的数组 arr
并初始化。然后,调用 quickSort
函数对数组进行排序。最后,打印排序后的数组。
你可以将以上代码保存为一个 C++ 源文件,编译并运行,即可看到原始数组和排序后的数组的输出。
结果如下所示:
原始数组:9 2 5 1 7 4 8 3 6
排序后的数组:1 2 3 4 5 6 7 8 9
希望这段代码能帮助你理解快速排序算法及其实现。