1 11 package org.eclipse.core.internal.expressions.util; 12 13 22 public class ToStringSorter { 23 Object [] sortedObjects; 24 String [] sortedStrings; 25 26 33 public boolean compare(String stringOne, String stringTwo) { 34 return stringOne.compareTo(stringTwo) < 0; 35 } 36 37 42 private void quickSort(int left, int right) { 43 int originalLeft= left; 44 int originalRight= right; 45 int midIndex= (left + right) / 2; 46 String midToString= this.sortedStrings[midIndex]; 47 48 do { 49 while (compare(this.sortedStrings[left], midToString)) 50 left++; 51 while (compare(midToString, this.sortedStrings[right])) 52 right--; 53 if (left <= right) { 54 Object tmp= this.sortedObjects[left]; 55 this.sortedObjects[left]= this.sortedObjects[right]; 56 this.sortedObjects[right]= tmp; 57 String tmpToString= this.sortedStrings[left]; 58 this.sortedStrings[left]= this.sortedStrings[right]; 59 this.sortedStrings[right]= tmpToString; 60 left++; 61 right--; 62 } 63 } while (left <= right); 64 65 if (originalLeft < right) 66 quickSort(originalLeft, right); 67 if (left < originalRight) 68 quickSort(left, originalRight); 69 } 70 71 77 public void sort(Object [] unSortedObjects, String [] unsortedStrings) { 78 int size= unSortedObjects.length; 79 this.sortedObjects= new Object [size]; 80 this.sortedStrings= new String [size]; 81 82 System.arraycopy(unSortedObjects, 0, this.sortedObjects, 0, size); 84 System.arraycopy(unsortedStrings, 0, this.sortedStrings, 0, size); 85 if (size > 1) 86 quickSort(0, size - 1); 87 } 88 } 89 | Popular Tags |