快排模板

2019-08-18  本文已影响0人  我麦

快排模板,采用分治的思想,每次取数组第一个值作为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);
}
上一篇 下一篇

猜你喜欢

热点阅读