vec.store[b] = tmp;
}
}
+
+ public static final void sortInts(int[] a, int start, int end) {
+ int tmpa;
+ if(start >= end) return;
+ if(end-start <= 6) {
+ for(int i=start+1;i<=end;i++) {
+ tmpa = a[i];
+ int j;
+ for(j=i-1;j>=start;j--) {
+ if(a[j] <= tmpa) break;
+ a[j+1] = a[j];
+ }
+ a[j+1] = tmpa;
+ }
+ return;
+ }
+
+ int pivot = a[end];
+ int lo = start - 1;
+ int hi = end;
+
+ do {
+ while(a[++lo] < pivot) { }
+ while((hi > lo) && a[--hi] > pivot) { }
+ swapInts(a, lo, hi);
+ } while(lo < hi);
+ swapInts(a, lo, end);
+ sortInts(a, start, lo-1);
+ sortInts(a, lo+1, end);
+ }
+
+ private static final void swapInts(int[] vec, int a, int b) {
+ if(a != b) {
+ int tmp = vec[a];
+ vec[a] = vec[b];
+ vec[b] = tmp;
+ }
+ }
}