标准快速排序

#include <stdio.h>

void exch(int& a, int &b)
{
    int tmp = a;
    a = b;
    b = tmp;
}

int partition(int a[], int l, int r)
{
    int i=l-1;
    int j=r;
    int val = a[r];
    while(1)
    {
        while(val > a[++i]);
        while(val < a[--j])
            if(j == l) break;
        if(i >= j) break;
        exch(a[i], a[j]);
    }
    exch(a[i], a[r]);
    return i;
}

void quicksort(int a[], int l, int r)
{
    if(r<=l) return;
    int i = partition(a, l, r);
    quicksort(a, l, i-1);
    quicksort(a, i+1, r);
}


int main()
{
    int a[10] = {4,3,6,5,3,1,8,9,6,5};
    quicksort(a, 0, 9);
    for(int i=0; i<10; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}
原文地址:https://www.cnblogs.com/wouldguan/p/2765379.html