19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage junit.runner;
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.*;
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.runner.*;
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A custom quick sort with support to customize the swap behaviour.
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NOTICE: We can't use the the sorting support from the JDK 1.2 collection
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * classes because of the JDK 1.1.7 compatibility.
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} - Not needed for 1.0 SDK
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Sorter {
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project	public static interface Swapper {
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		public void swap(Vector values, int left, int right);
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project	}
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project	public static void sortStrings(Vector values , int left, int right, Swapper swapper) {
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		int oleft= left;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		int oright= right;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		String mid= (String)values.elementAt((left + right) / 2);
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		do {
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			while (((String)(values.elementAt(left))).compareTo(mid) < 0)
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project				left++;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			while (mid.compareTo((String)(values.elementAt(right))) < 0)
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project				right--;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			if (left <= right) {
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project				swapper.swap(values, left, right);
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project				left++;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project				right--;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			}
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		} while (left <= right);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		if (oleft < right)
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			sortStrings(values, oleft, right, swapper);
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project		if (left < oright)
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project			 sortStrings(values, left, oright, swapper);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project	}
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
40