写一个C++快排代码
时间: 2024-02-15 11:01:35 浏览: 102
好的,以下是一个简单的 C++ 快排实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) {
return;
}
int pivot = nums[left];
int i = left, j = right;
while (i < j) {
while (i < j && nums[j] >= pivot) {
j--;
}
nums[i] = nums[j];
while (i < j && nums[i] <= pivot) {
i++;
}
nums[j] = nums[i];
}
nums[i] = pivot;
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
int main() {
vector<int> nums = {3, 2, 5, 1, 4};
quickSort(nums, 0, nums.size() - 1);
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
在这个代码中,我们使用了递归的方式来实现快排。我们首先选取一个基准值 pivot,然后将数组分为两部分,左边的部分小于等于 pivot,右边的部分大于等于 pivot。然后分别对左右两部分进行递归排序,最终得到一个有序的数组。
需要注意的是,在实际应用中,快排可能会遇到最坏情况,即每次选取的基准值都是最大或最小值,这样会导致递归深度过大,甚至栈溢出。为了避免这种情况,可以采用随机化的方式来选取基准值,或者使用其他更高效的排序算法。
阅读全文