Chi lo trova vince.... vince... la soddisfazione di esserci riuscito
public void sort() {
quicksort(strings, 0, strings.length - 1);
}
/* partiziona l'array */
private int partition(String[] array, int left, int right,
int pivotIndex) {
String pivotValue = array[pivotIndex];
swap(pivotIndex, right); // Pone pivot alla fine
int storeIndex = left;
for (int i = left; i < right; i++) {
if (array[i].compareToIgnoreCase(pivotValue) < 0) {
swap(i, storeIndex);
storeIndex++;
}
}
swap(storeIndex, right); // Pone pivot nella sua posizione finale
return storeIndex;
}
/* effettua l'ordinamento quicksort */
private void quicksort(String[] array, int left, int right) {
final int TWO = 2;
if (right > left) {
int pivotIndex = left + (right - left) / TWO;
int pivotNewIndex = partition(array, left, right, pivotIndex);
quicksort(array, left, pivotNewIndex - 1);
quicksort(array, pivotNewIndex + 1, right);
}
}
Aggiungo anche il codice dello swap anche se non è necessario ai fini del gioco:
protected void swap(int i, int j) {
String strTemp = strings[i];
strings[i] = strings[j];
strings[j] = strTemp;
int indTemp = invertedIndexes[i];
invertedIndexes[i] = invertedIndexes[j];
invertedIndexes[j] = indTemp;
directIndexes[invertedIndexes[i]] = i;
directIndexes[invertedIndexes[j]] = j;
}
Good Luck