public class QuickSort { private void qsort(Comparable[] toBeSorted, int lo0, int hi0) { int lo = lo0; int hi = hi0; if ( hi0 > lo0) { Comparable mid = toBeSorted[ ( lo0 + hi0 ) / 2 ]; while ( lo <= hi ) { while (( lo < hi0 ) && ( mComparator.compare(toBeSorted[lo], mid) < 0 )) ++lo; while (( hi > lo0 ) && ( mComparator.compare(toBeSorted[hi], mid) > 0 )) --hi; if ( lo <= hi ) { swap(toBeSorted, lo, hi); ++lo; --hi; } } } } public static void sort(Comparable[] toBeSorted) { } public void staticOver(Comparable[] toBeSorted){ qsort(toBeSorted, 0, toBeSorted.length - 1); } public static abstract class Comparator { public abstract int compare(Comparable obj1, Comparable obj2); } private Comparator mComparator; public QuickSort(Comparator comparator) { mComparator = comparator; } private void swap(Comparable[] toBeSorted, int i, int j) { Comparable tmp = toBeSorted[i]; toBeSorted[i] = toBeSorted[j]; toBeSorted[j] = tmp; } }