import java.util.List; public class QuickSort { public static > void sort(List list) { quicksort(list, 0, list.size()); } private static > void quicksort(List list, int p, int r) { if (p < r) { int q = partition(list, p, r-1); quicksort(list, p, q-1); quicksort(list, q+1, r); } } private static > int partition(List list, int p, int r) { T tempi; T x = list.get(r); int i = p-1; for (int j=p; j <= r-1; ++j) { if (list.get(j).compareTo(x) <= 0) { ++i; tempi = list.get(i); //swap A[i] <-> A[j] list.set(i, list.get(j)); list.set(j, tempi); } } tempi = list.get(i+1); //swap A[i+1] <-> A[r] list.set(i+1, list.get(r)); list.set(r, tempi); return i+1; } }