static void sort(int a[], int lo0, int hi0) { int lo = lo0; int hi = hi0; if (lo >= hi) { return; } int mid = a[(lo + hi) / 2]; while (lo < hi) { while (lo<hi && a[lo] < mid) { lo++; } while (lo<hi && a[hi] >= mid) { hi--; } if (lo < hi) { int T = a[lo]; a[lo] = a[hi]; a[hi] = T; } } if (hi < lo) { int T = hi; hi = lo; lo = T; } sort(a, lo0, lo); sort(a, lo == lo0 ? lo+1 : lo, hi0); } static void sort(int a[]) { sort(a, 0, a.length-1); } }