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