思路:
快速排序到关键在于先在数组中选择一个数字,接下来将比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边
C++实现:
#include<iostream>
#include<vector>
using namespace std;
void helper(vector<int>& vec,int left,int right);
void quickSort(vector<int>& vec){
if(vec.size()<=1)
return;
int left=0;
int right=(int)vec.size()-1;
helper(vec,left,right);
}
void helper(vector<int>& vec,int left,int right){
int tmp=vec[left];
int i=left;
int j=right;
if(left>right)
return;
while(i<j){
while(vec[j]>=tmp&&i<j)
--j;
while(vec[i]<=tmp&&i<j)
++i;
if(i<j)
swap(vec[i],vec[j]);
}
vec[left]=vec[i];
vec[i]=tmp;
helper(vec,left,i-1);
helper(vec,i+1,right);
return;
}
int main(){
vector<int> vec;
int num;
for(int i=0;i<10;i++){
cin>>num;
vec.push_back(num);
}
quickSort(vec);
for(int i=0;i<10;i++)
cout<<vec[i]<<" ";
}