Ниже приведен код, который я написал для рандомизированной быстрой сортировки. Когда я запускаю код я получаю ArrayIndexOutOfBoundException.Can кто-то пожалуйста, скажите мне, где я сделал mistake.Exception в теме «главный»рандомизированный quicksort с использованием jav
java.lang.ArrayIndexOutOfBoundsException: -1
at randompartition.partition(randompartition.java:21)
at randompartition.quicksort(randompartition.java:37)
at randompartition.quicksort(randompartition.java:38)
at randompartition.quicksort(randompartition.java:38)
at randompartition.main(randompartition.java:59)
import java.util.Random;
import java.util.Scanner;
public class randompartition {
static randompartition r =new randompartition();
private Scanner s;
void exchange(int a,int b){
int temp;
temp=a;
a=b;
b=temp;
}
int random(int start,int end) {
Random rn=new Random();
int pindex=rn.nextInt(end-start+1);
return pindex;
}
int partition(int A[],int start,int end){
int pivot=A[end-1];
int pindex=r.random(start, end-1);
r.exchange(A[pindex], A[end-1]);
for(int i=0;i<end;i++){
if (A[i]<=pivot) {
pindex=pindex+1;
r.exchange(A[pindex],A[i]);
}
}
r.exchange(A[pindex],A[end-1]);
return pindex;
}
void quicksort(int A[],int start,int end){
if(start<end){
int pindex=r.partition(A, start, end-1);
r.quicksort(A,start,pindex-1);
r.quicksort(A, pindex+1, end-1);
}
}
int [] createarray() {
int i;
s = new Scanner(System.in);
System.out.println("enter size of array");
int n=s.nextInt();
int A[]=new int[n];
System.out.println("enter array elements");
int end=A.length;
for(i=0;i<end;i++){
A[i]=s.nextInt();
}
return A;
}
public static void main(String[] args) {
int []A=r.createarray();
int end=A.length;
r.quicksort(A,0,end-1);
for(int i=0;i<A.length;i++){
System.out.println(A[i]);
}
}
}
И какая строка кода является ошибкой, о которой жалуется, - номера строк в представленном коде отсутствуют. – pczeus
Вы пробовали переходить через ваш код с помощью отладчика и наблюдать за значениями ваших переменных? –