package junit.runner;

import java.util.* ;

import junit.framework.* ;
import junit.runner.* ;

/**
 * A custom quick sort with support to customize the swap behaviour.
 * NOTICE: We can't use the the sorting support from the JDK 1.2 collection
 * classes because of the JDK 1.1.7 compatibility.
 */
public class Sorter {
        public static interface Swapper {
                public void swap(Vector values, int left, int right);
        }

        public static void sortStrings(Vector values , int left, int right, Swapper swapper) {
                int oleft = left;
                int oright = right;
                String mid = (String) values.elementAt((left + right) / 2);
                do {
                        while (((String) (values.elementAt(left))).compareTo(mid) < 0)
                                left++;
                        while (mid.compareTo((String) (values.elementAt(right))) < 0)
                                right--;
                        if (left <= right) {
                                swapper.swap(values, left, right);
                                left++;
                                right--;
                        }
                } while (left <= right);

                if (oleft < right)
                        sortStrings(values, oleft, right, swapper);
                if (left < oright)
                         sortStrings(values, left, oright, swapper);
        }
}