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 Project/** 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A custom quick sort with support to customize the swap behaviour. 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NOTICE: We can't use the the sorting support from the JDK 1.2 collection 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * classes because of the JDK 1.1.7 compatibility. 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} - Not needed for 1.0 SDK 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Sorter { 12f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot public static interface Swapper { 13f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot public void swap(Vector values, int left, int right); 14f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot } 15f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot 16f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot public static void sortStrings(Vector values , int left, int right, Swapper swapper) { 17f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot int oleft= left; 18f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot int oright= right; 19f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot String mid= (String)values.elementAt((left + right) / 2); 20f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot do { 21f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot while (((String)(values.elementAt(left))).compareTo(mid) < 0) 22f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot left++; 23f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot while (mid.compareTo((String)(values.elementAt(right))) < 0) 24f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot right--; 25f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot if (left <= right) { 26f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot swapper.swap(values, left, right); 27f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot left++; 28f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot right--; 29f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot } 30f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot } while (left <= right); 31f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot 32f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot if (oleft < right) 33f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot sortStrings(values, oleft, right, swapper); 34f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot if (left < oright) 35f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot sortStrings(values, left, oright, swapper); 36f1253cd68a1ef45f4bb0c15d3e2834ca8f91e03fBrett Chabot } 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 38