#include <iostream>
#include <vector>
using namespace std;
int partition(vector<int>& nums, int start, int end){
int idx = start + rand()%(end-start+1);
swap(nums[start], nums[idx]);
int pivot = nums[start];
int left = start+1, right = end;
while(left <= right){
while(left <= right && nums[left]<=pivot) left++;
while(left <= right && nums[right]>=pivot) right--;
if(left < right){
swap(nums[left], nums[right]);
left++; right--;
}
}
swap(nums[start], nums[right]);
return right;
}
void quick_sort(vector<int>& nums, int left, int right){
if(left>=right) return;
int mid = partition(nums, left, right);
quick_sort(nums, left, mid-1);
quick_sort(nums, mid+1, right);
}
void quick_sort(vector<int>& nums){
quick_sort(nums, 0, nums.size()-1);
}
int main()
{
vector<int> nums{1,3,2,7,5,6};
quick_sort(nums);
for(int num : nums) cout << num << endl;
cout << "Hello World" << endl;
return 0;
}
快排 模版
最新推荐文章于 2024-08-09 10:25:03 发布