int particionar(int[] a, int imin, int imax) {
int ipiv= imin;
int k= imin;
int j= k+1;
while (j<=imax) {
if (a[j]<a[ipiv] ) {
k= k+1;
intercambiar(a, k, j);
}
j= j+1;
}
intercambiar(a, k, ipiv);
return k;
}
/******************************/
void quicksort(int[] a, int imin, int imax) {
if (imin>=imax)
return;
int k= particionar(a, imin, imax);
quicksort(a, imin, k-1);
quicksort(a, k+1, imax);
}