quicksort in C

<!-- lang: cpp -->
int merge(int *a, int p,int q)
{
    int mid = a[q];
    int buf;

    int i = p-1;
    int j = p;

    while(j<q)
    {
        if(a[j]<mid)
        {
            i++;
            buf = a[j];
            a[j] = a[i];
            a[i] = buf;

        }
        j++;
    }

    buf = a[i+1];
    a[i+1] = a[q];
    a[q] = buf;

    return i;
}

void quicksort(int *a, int p, int q)
{
    int i;
    if(p<q){
        i = merge(a,p,q);
        quicksort(a,p,i);
        quicksort(a,i+2,q);
    }
}

你可能感兴趣的:(Quicksort)