Tarea 1: Convertir el algoritmo Merge a Java - psyepez2005/Analisis_De_Algoritmos GitHub Wiki
Método
Después de adaptar el método para que funcione con los índices que 0 que es como funciona java, el método queda de esta forma:
public static int[] merge(int[] A, int p, int q, int r) {
int nl = q - p + 1;
int nr = r - q;
int[] L = new int[nl];
int[] R = new int[nr];
for (int i = 0; i < nl; i++) {
L[i] = A[p + i - 1];
}
for (int j = 0; j < nr; j++) {
R[j] = A[q + j];
}
int i = 0;
int j = 0;
int k = p;
while (i < nl && j < nr) {
if (L[i] <= R[j]) {
A[k - 1] = L[i];
i++;
} else {
A[k - 1] = R[j];
j++;
}
k++;
}
while (i < nl) {
A[k - 1] = L[i];
i++;
k++;
}
while (j < nr) {
A[k] = R[j];
j++;
k++;
}
return A;
}
LLamada:
Para probarlo, utilice el mismo ejemplo realizado en clases
public static void main(String[] args) {
int[] A = {10,9,8,5,4,3};
System.out.println("ANTES: ");
for (int i = 0; i < A.length; i++) {
System.out.println(A[i]);
}
int p = 1;
int r = A.length;
int q = r/2;
A = merge(A,p,q,r);
System.out.println("DESPUES: ");
for (int i = 0; i < A.length; i++) {
System.out.println(A[i]);
}
}
Salida:
run: ANTES: 10 9 8 5 4 3 DESPUES: 5 4 3 10 9 8 BUILD SUCCESSFUL (total time: 0 seconds)