Buenas a todos estoy haciendo un algortimo MergeSort en Java que me da el siguiente error:
xception in thread "Thread-5" java.lang.ArrayIndexOutOfBoundsException: 2
at mtp2.MergeSort.Combina(MergeSort.java:47)
at mtp2.MergeSort.MergeS(MergeSort.java:19)
at mtp2.MergeSort.MergeS(MergeSort.java:17)
at mtp2.MergeSort.MergeS(MergeSort.java:17)
at mtp2.MergeSort.MergeS(MergeSort.java:17)
at mtp2.MergeSort.MergeS(MergeSort.java:17)
at mtp2.MergeSort.sort(MergeSort.java:10)
at mtp2.SortAlgorithm.run(SortAlgorithm.java:77)
El merge sort es una classe k coge variables de otra clase como el array a ordenar. Quizas ahi este el fallo. El codigo en si es este.
public class MergeSort extends SortAlgorithm {
public void sort() {
int aux[]=arrayData;
int ini=0;
int fin=arrayData.length;
MergeS(aux,ini,fin);
updateVisual();
}
public void MergeS(int A[], int ini, int fin){
if (ini < fin){
int med = (ini+fin)/2;
MergeS (A, ini, med);
MergeS (A, med+1,fin);
Combina (A, ini, med, fin);
}
}
public void Combina (int A[], int ini, int med, int fin){
int aux[]= new int [fin-ini+1];
int i =ini;
int j= med+1;
int k=0;
while(i<=med && j<=fin){
++this.comparisons;
if(A[i]<A[j]){
aux[k]=A[i];
i++;
++swaps;
}else{
aux[k]=A[j];
j++;
++swaps;
}
k++;
}
while (i<=med){
aux[k]=A[i];
i++;
k++;}
while (i<=fin){
aux[k]=A[j];
j++;
k++;}
for (int n=0; n< aux.length;n++ ){
A[ini+n]=aux[n];
}
}}
Gracias por la ayuda