快排是一个递归的排序过程,每次递归,将当前序列的第一个元素当作中间值pivot(也可以选最右边或者随机),把比pivot小的放左边,比pivot大的放右边,再依次对左边的序列和右边的序列分别排序。
vector<int> MySort(vector<int>& arr) {
// write code here
int n = arr.size();
if(n < 2){
return arr;
}
QuickSort(arr,0,n-1);
return arr;
}
void QuickSort(vector<int>& arr, int l, int r){
if(l >= r){
return;
}
int pivot = arr[l];
int lc = l,rc = r;
while(lc < rc){
while(lc < rc && arr[rc] > pivot){
rc--;
}
if(lc < rc){
arr[lc] = arr[rc];
lc++;
}
while(lc < rc && arr[lc] <= pivot){
lc++;
}
if(lc < rc){
arr[rc] = arr[lc];
rc--;
}
}
arr[lc] = pivot;
QuickSort(arr,l,lc-1);
QuickSort(arr,lc+1,r);
}