Я попытался реализовать QuickSort с ног до головы, но я выбрал исключение: 6 во время компиляции. Я думал, что я правильно использовал сеттер метод для назначения массива, но это, кажется, что-то еще не так ...Что не так с моей реализацией QuickSort
Ниже мой код:
public class MyClass {
private int array[];
public void setArray(int[] arr){
this.array=arr;
quickSort(0,array.length-1);
}
private int length;
private void quickSort(int lowIndex, int highIndex){
int pivot = array[lowIndex+(highIndex-lowIndex/2)]; // our pivot
int i = lowIndex;
int j = highIndex;
while(i<=j){
while(array[i]<pivot){
i++;
}
while(array[j]>pivot){
j--;
}
if(i<=j){
int temp = array[i];
array[j] = array[i];
array[i] = temp;
i++;
j--;
}
}
if(lowIndex<j){
quickSort(lowIndex, j);
}
if(highIndex>i){
quickSort(i, highIndex);
}
}
public static void main(String[] args) {
int[] array2 = {2,45,96,1,16};
MyClass b = new MyClass();
b.setArray(array2);
for(int x=0;x<array2.length;x++){
System.out.print(array2[x]+" ");
}
}
}
1> Я думаю, что вы имеете в виду, что во время выполнения вы получаете исключение из-за границ. 2> Есть ли номер строки, прикрепленный к ошибке? Где это относится к вашему фрагменту кода? – synchronizer
'highIndex-lowIndex/2' - это не то, что вы думаете. – user2357112