1 11 package org.eclipse.jdt.internal.core.util; 12 13 19 public class ToStringSorter { 20 Object [] sortedObjects; 21 String [] sortedStrings; 22 26 public boolean compare(String stringOne, String stringTwo) { 27 return stringOne.compareTo(stringTwo) < 0; 28 } 29 32 private void quickSort(int left, int right) { 33 int originalLeft = left; 34 int originalRight = right; 35 int midIndex = left + (right - left) / 2; 36 String midToString = this.sortedStrings[midIndex]; 37 38 do { 39 while (compare(this.sortedStrings[left], midToString)) 40 left++; 41 while (compare(midToString, this.sortedStrings[right])) 42 right--; 43 if (left <= right) { 44 Object tmp = this.sortedObjects[left]; 45 this.sortedObjects[left] = this.sortedObjects[right]; 46 this.sortedObjects[right] = tmp; 47 String tmpToString = this.sortedStrings[left]; 48 this.sortedStrings[left] = this.sortedStrings[right]; 49 this.sortedStrings[right] = tmpToString; 50 left++; 51 right--; 52 } 53 } while (left <= right); 54 55 if (originalLeft < right) 56 quickSort(originalLeft, right); 57 if (left < originalRight) 58 quickSort(left, originalRight); 59 } 60 64 public void sort(Object [] unSortedObjects, String [] unsortedStrings) { 65 int size = unSortedObjects.length; 66 this.sortedObjects = new Object [size]; 67 this.sortedStrings = new String [size]; 68 69 System.arraycopy(unSortedObjects, 0, this.sortedObjects, 0, size); 71 System.arraycopy(unsortedStrings, 0, this.sortedStrings, 0, size); 72 if (size > 1) 73 quickSort(0, size - 1); 74 } 75 } 76 | Popular Tags |