快排模板,采用分治的思想,每次取数组第一个值作为pivot,将比pivot小的数放在pivot左方,比pivot大的数放在pivot右方。对pivot左右两方的过程重复这个操作。
void swap(vector<int> &v, int a, int b){
int tmp = v[a];
v[a] = v[b];
v[b] = tmp;
}
void quick_sort(vector<int> &v, int start, int end){
if(start>end)
return;
int pivot = v[start];
int last = start;
for(int i = start+1; i <= end; i++){
if(v[i]<=pivot)
swap(v, ++last, i);
}
swap(v,start,last);
quick_sort(v,start,last-1);
quick_sort(v,last+1,end);
}
网友评论