/* * QuickSort.java * * Created on 29. Januar 2007, 16:41 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ /** * * */ public class QuickSort { private static Comparable[] a; private static void qsort( int lo0, int hi0) { int lo = lo0; int hi = hi0; if ( hi0 > lo0) { Comparable mid = a[ ( lo0 + hi0 ) / 2 ]; while ( lo <= hi ) { while (( lo < hi0 ) && ( mComparator.compare(a[lo], mid) < 0 )){ ++lo; } while (( hi > lo0 ) && ( mComparator.compare(a[hi], mid) > 0 )){ --hi; } if ( lo <= hi ) { swap(a, lo, hi); ++lo; --hi; } } } } public static void sort(Comparable[] toBeSorted) { a=toBeSorted; qsort( 0, a.length - 1); toBeSorted= a; } public abstract class Comparator { public abstract int compare(Comparable obj1, Comparable obj2); } private static Comparator mComparator; public QuickSort(Comparator comparator) { mComparator = comparator; } private static void swap(Comparable[] toBeSorted, int i, int j) { Comparable tmp = toBeSorted[i]; toBeSorted[i] = toBeSorted[j]; toBeSorted[j] = tmp; } }