void quicksort( int A, int i, int j )
{
int ind, k;
ind = pivote( A, i, j );
if( ind >= 0 ) {
k = particion(A, i, j, A[ind] );
quicksort( A, i, k-1 );
quicksort( A, k, j );
}
}
int pivote( int A[],int i,int j )
{
int k, r;
for( k = i+1; k <= j; k++ ) {
if(A[k]>A[i])
return i;
else
if(A[k]<A[i])
return k;
}
/* No hay llaves diferentes */
return -1;
}
int particion( int A[],int i, int j, int v )
{
int l,r;
l=i; r=j;
do {
aux=A[l];
A[l]=A[r];
A[r]=aux;
while(A[l]<v)
l++;
while(A[r]>=v)
r--;
} while ( l<r );
return l;
}