Foros del Web » Programación para mayores de 30 ;) » Programación General »

Error en el algoritmo MergeSort en Java

Estas en el tema de Error en el algoritmo MergeSort en Java en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/11/2008, 12:50
 
Fecha de Ingreso: abril-2008
Mensajes: 28
Antigüedad: 16 años, 7 meses
Puntos: 0
Error en el algoritmo MergeSort en Java

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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:34.