quicksort快排

废话不多说,上代码:

void quicksort(int x[], int lo, int hi){

    int i = lo, j = hi;
    int pivot = x[(lo + hi) >> 1];

    while(i <= j){
        while(x[i] < pivot) i++;
        while(x[j] > pivot) j--;

        if(i <= j){
            swap(x[i], x[j]);
            i++;
            j--;
        }

    }

    if(lo < j) quicksort(lo, j);
    if(i < hi) quicksort(i, hi);

}

注意学会这个partition algorithm,随便选一个值当做pivot,然后两个指针分别指向两头,往中间挤。

Reference: here

posted @ 2015-03-28 08:26  zmiao  阅读(107)  评论(0编辑  收藏  举报