用c++写一个快排
时间: 2023-07-01 08:22:21 浏览: 114
C语言的快排
好的,下面是C++实现的快速排序代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 交换函数
void swap(int& a, int& b){
int temp = a;
a = b;
b = temp;
}
// 快速排序函数
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--;
while(i < j && nums[i] <= pivot) i++;
if(i < j) swap(nums[i], nums[j]);
}
swap(nums[left], nums[i]); // 将基准数放到中间
quickSort(nums, left, i-1); // 递归排序左半边
quickSort(nums, i+1, right); // 递归排序右半边
}
int main(){
vector<int> nums = {3, 2, 1, 5, 6, 4};
quickSort(nums, 0, nums.size()-1);
for(auto num : nums){
cout << num << " ";
}
cout << endl;
return 0;
}
```
快速排序是一种高效的排序算法,时间复杂度为 O(nlogn)。它的基本思路是:选择一个数作为基准数,将比它小的数放在它的左边,比它大的数放在它的右边,然后递归地对左右两个子序列进行排序。
阅读全文