快排

void quicksort(int *a, int n, int l, int r)
{
    int lb,ub,key;
    lb = l;
    ub = r;
    key = a[lb];
    while(lb < ub)
    {
        while(lb < ub && a[ub] > key) {ub --;}
        if(lb < ub) { a[lb] = a[ub]; lb ++; }

        while(lb < ub && a[lb] < key) {lb ++;}
        if(lb < ub) { a[ub] = a[lb]; ub--;}
    }
    a[lb] = key;
    if(lb - l > 0) quicksort(a, lb, l, lb-1);
    if(r - ub > 0) quicksort(a, n-1-lb, lb+1, r);
}

希望下次贴贴的划分代码是自己写的。。

posted @ 2013-07-28 17:15  i梦  阅读(112)  评论(0)    收藏  举报