int d, i, r, tr, llow;
int d, i, r, llow;
private static void qsort(vValue x[], int l, int u){    int d, i, r, tr, llow;    vValue t, v;    if (l >= u) {    	return;    }    r = l + (int) ((u - l) * Math.random());	// don't perturb &random    swap(x, l, r);    t = x[l];    tr = t.rank();    llow = l;    for (i = l + 1; i <= u; i++) {	v = x[i];	d = v.rank() - tr;	if (d == 0) {	    d = v.compareTo(t);	}    	if (d < 0) {	    llow++;	    swap(x, llow, i);	}    }    swap(x, l, llow);    qsort(x, l, llow-1);    qsort(x, llow+1, u);}