Sorter.java revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1package junit.runner;
2
3import java.util.*;
4
5import junit.runner.*;
6
7/**
8 * A custom quick sort with support to customize the swap behaviour.
9 * NOTICE: We can't use the the sorting support from the JDK 1.2 collection
10 * classes because of the JDK 1.1.7 compatibility.
11 */
12public class Sorter {
13    public static interface Swapper {
14        public void swap(Vector values, int left, int right);
15    }
16
17    public static void sortStrings(Vector values , int left, int right, Swapper swapper) {
18        int oleft= left;
19        int oright= right;
20        String mid= (String)values.elementAt((left + right) / 2);
21        do {
22            while (((String)(values.elementAt(left))).compareTo(mid) < 0)
23                left++;
24            while (mid.compareTo((String)(values.elementAt(right))) < 0)
25                right--;
26            if (left <= right) {
27                swapper.swap(values, left, right);
28                left++;
29                right--;
30            }
31        } while (left <= right);
32
33        if (oleft < right)
34            sortStrings(values, oleft, right, swapper);
35        if (left < oright)
36             sortStrings(values, left, oright, swapper);
37    }
38}
39