快速排序c++并用中文注释
时间: 2023-07-05 12:36:02 浏览: 63
下面是快速排序的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) {
i++;
}
while (arr[j] > 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, 3, 1, 4, 2};
int len = sizeof(arr) / sizeof(arr[0]);
cout << "排序前的数组为:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
quickSort(arr, 0, len - 1);
cout << "排序后的数组为:" << endl;
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
注释说明:
- `quickSort` 函数:快速排序算法的实现,其中 `left` 和 `right` 分别表示数组的左右下标。
- `pivot`:枢纽元,选择中间的元素作为枢纽元。
- `while` 循环:分割数组的过程,将小于枢纽元的元素放到左边,大于枢纽元的元素放到右边。
- `if` 语句:递归排序左右两个子数组。
- `main` 函数:测试代码,打印排序前后的数组。