1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class QuickSort { public static void sort(Comparable[] a) { sort(a, 0, a.length - 1); }
private static void sort(Comparable[] a, int lo, int hi) { if (lo >= hi) { return; } int mid = partition(a, lo, hi); sort(a, lo, mid - 1); sort(a, mid + 1, hi); }
private static int partition(Comparable[] a, int lo, int hi) { int i = lo; int j = hi + 1; Comparable v = a[lo]; while (true) { while (less(a[++i], v) && i <= hi> ) { } while (less(v, a[--j]) && j >= lo) { } if (i >= j) { break; } exch(a, i, j); } exch(a, lo, j); return j; } }
|