Я пытаюсь передать свою реализацию Quicksort через тестер; Однако, я получаю массив Index Out Of Bounds исключения -1 на Commended линииБыстрая сортировка по возрастанию
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;
}
я пытался отладить мой код, но кажется, что я просто не вижу способ исправить ошибку. Любая помощь будет оценена по достоинству.
'' 'indexOf''' возвращает -1, если он ничего не может найти. –
Очевидно, что 'left' равно -1 –
Кажется, вы уменьшаете' right' до 'right == - 1' и поэтому' data.get (справа) 'throws' java.lang.ArrayIndexOutOfBoundsException: -1' –