c++用STL的容器vector和partition实现快速排序功能。
时间: 2024-03-04 22:48:13 浏览: 111
用C++实现快速排序
3星 · 编辑精心推荐
快速排序是一种基于分治思想的排序算法,可以使用 STL 的容器 vector 和 partition 来实现。
具体实现步骤如下:
1. 定义递归函数 quick_sort(),传入 vector、排序起始位置和排序结束位置;
2. 随机选择一个基准元素 pivot,将 vector 分成两个部分,左边部分的值都小于或等于 pivot,右边部分的值都大于 pivot;
3. 使用 STL 的 partition 算法将 vector 分成两个部分,返回分界点的迭代器;
4. 递归调用 quick_sort() 函数对左右两个部分进行排序,直到排序结束。
下面是实现代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void quick_sort(vector<int>& nums, int start, int end) {
if (start >= end) {
return;
}
int pivot = nums[start];
auto iter = partition(nums.begin() + start, nums.begin() + end + 1, [pivot](int x){ return x <= pivot; });
int mid = iter - nums.begin();
quick_sort(nums, start, mid - 1);
quick_sort(nums, mid, end);
}
int main() {
vector<int> nums = {3, 5, 1, 6, 2, 7, 4, 8};
quick_sort(nums, 0, nums.size() - 1);
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
输出结果为:1 2 3 4 5 6 7 8。
阅读全文