Ich versuche, meine Implementierung des Quicksort durch einen Tester zu übergeben; aber ich Array Index Out Of Bounds Ausnahme von -1 auf der Linie lobtQuick-sort in aufsteigender Reihenfolge
public void quickSort(ArrayList<String> data, int firstIndex,
int numberToSort) {
if (data.size() < 16) {
insertionSort(data, firstIndex, numberToSort);
} else {
int index = partition(data, firstIndex, numberToSort);
if (firstIndex < index - 1)
quickSort(data, firstIndex, index - 1);
if (numberToSort > index)
quickSort(data, index, numberToSort);
}
}
@Override
public int partition(ArrayList<String> data, int firstIndex,
int numberToPartition) {
String pivot = data.get(firstIndex);
int left = data.indexOf(firstIndex);
int right = data.indexOf(numberToPartition);
while (left <= right) {
while (data.get(left).compareTo(pivot) < 0) // this is where I get the error
left++;
while (data.get(right).compareTo(pivot) > 0)
right--;
if (left <= right) {
temp = data.get(left);
Collections.swap(data, left, right);
data.set(right, temp);
left++;
right--;
}
}
return left;
}
Ich habe versucht, erhalte, meinen Code zu debuggen, aber es scheint, dass ich einfach nicht sehen, wie man die Fehler zu beheben. Jede Hilfe wäre willkommen.
'' erhalten 'indexOf''' gibt -1 zurück, wenn es nichts findet. –
Offensichtlich 'links' ist -1 –
Es scheint so, als würden Sie' rechts' verkleinern bis 'rechts == - 1' und daher' data.get (rechts) 'throws' java.lang.ArrayIndexOutOfBoundsException: -1' –