All pastes #184572 Raw Edit

Stuff

public text v1 · immutable
#184572 ·published 2006-09-28 01:07 UTC
rendered paste body
#define eq(A,B) (!less(A,B)&& !less(B,A))

void quicksort(Item a[],int l,int r)
{
    int i,j,k,p,q;
    Item v;
    
    if (r <=l) return;
    
    v=a[r];
    i=l-1;
    j=r;
    p=l-1;
    q=r;

    for(;;) {
        while (less(a[++i],v));
        
        while (less(v,a[--j]))
            if (j==l) break;

        if (i>=j) break;

        exch(a[i],a[j]);
        if (eq(a[i],v)) {
            p++;
            exch(a[p],a[i]);
        }
        
        if (eq(v,a[j])) {
            q--;
            exch(a[q],a[j]);
        }
    }
    exch(a[i],a[r]);
    
    j=i-1;
    i=i+1;

    for (k=l ; k<p;k++,j++)
        exch(a[k],a[j]);

    for (k=r-1;k>q;k--,i++)
        exch(a[k],a[i]);

    quicksort(a,l,j);
    quicksort(a,i,r);
}