给出实现快排的C++代码,并加上注释
时间: 2024-09-12 10:10:49 浏览: 28
以下是使用C++实现快速排序的一个简单示例,带有一些注释说明每一步的作用:
```cpp
#include <iostream>
using namespace std;
// 定义一个辅助函数 partition,用于划分数组
int partition(int arr[], int low, int high) {
// 选择最后一个元素作为基准
int pivot = arr[high];
int i = (low - 1); // 标记区间的起始位置
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于或等于基准
if (arr[j] <= pivot) {
i++; // 移动标记到右边
// 交换元素的位置
swap(arr[i], arr[j]);
}
}
// 将基准元素放到正确的位置
swap(arr[i + 1], arr[high]);
return (i + 1);
}
// 快速排序主函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
// 计算分区后的基准索引
int pi = partition(arr, low, high);
// 对左右两个子区间分别进行递归排序
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// 测试快速排序
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
}
int main() {
int data[] = {9, 7, 5, 11, 12, 2, 14, 3, 10, 6};
int n = sizeof(data) / sizeof(data[0]);
cout << "Original array: \n";
printArray(data, n);
quickSort(data, 0, n - 1);
cout << "\nSorted array: \n";
printArray(data, n);
return 0;
}
```
在这段代码中,`partition`函数负责将数组划分为两个部分,然后`quickSort`函数对这两个部分递归地进行排序。`main`函数则是整个程序的入口,创建了一个数组并展示排序前后的效果。
阅读全文