快速排序c++并用中文注释
时间: 2023-07-05 12:36:04 浏览: 44
以下是快速排序的C++代码和中文注释:
```C++
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2]; // 选择中间元素作为枢轴
// 分割
while (i <= j) {
while (arr[i] < pivot) // 找到左边第一个大于等于 pivot 的元素
i++;
while (arr[j] > pivot) // 找到右边第一个小于等于 pivot 的元素
j--;
if (i <= j) { // 如果左边的元素大于右边的元素,则交换它们
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
// 递归排序左半部分和右半部分
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main() {
int arr[] = { 5, 1, 9, 3, 7, 4, 8, 6, 2 };
int size = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, size - 1);
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
return 0;
}
```
注释说明:
1. `quickSort` 函数接收一个整数数组 `arr`,以及数组的左右边界 `left` 和 `right`
2. `i` 和 `j` 分别表示左右两个指针,`tmp` 用于交换元素
3. `pivot` 为枢轴元素,选择数组中间的元素作为枢轴
4. `while` 循环找到左边第一个大于等于 pivot 的元素,以及右边第一个小于等于 pivot 的元素
5. 如果左边的元素大于右边的元素,则交换它们
6. 递归排序左半部分和右半部分
7. `main` 函数初始化一个整数数组 `arr`,并调用 `quickSort` 函数进行排序
8. 输出排序后的数组元素