快速排序c++
时间: 2023-06-21 13:18:33 浏览: 91
下面是使用 C++ 实现快速排序的代码示例(以升序为例):
```
void quick_sort(vector<int> &arr, int left, int right) {
if (left >= right) return; // 边界条件
int pivot = arr[left]; // 取最左边的元素为基准
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) j--; // 从右往左找到第一个小于 pivot 的元素
arr[i] = arr[j]; // 将该元素赋值给左边的位置
while (i < j && arr[i] <= pivot) i++; // 从左往右找到第一个大于 pivot 的元素
arr[j] = arr[i]; // 将该元素赋值给右边的位置
}
arr[i] = pivot; // 将基准元素放到中间位置
quick_sort(arr, left, i - 1); // 递归处理左边的子序列
quick_sort(arr, i + 1, right); // 递归处理右边的子序列
}
```
调用方式如下:
```
vector<int> arr = {3, 1, 4, 2, 5};
quick_sort(arr, 0, arr.size() - 1);
for (int x : arr) {
cout << x << " ";
}
// 输出结果为 1 2 3 4 5
```
需要注意的是,这里使用了 C++ 的 vector 容器来存储待排序的数组。同时,为了方便起见,这里使用的是左闭右闭区间的写法,即在递归处理左右子序列时,左右端点都被包括在内。
阅读全文