Skip to content

Commit eaccb2b

Browse files
committed
Added Actividad22_Aplicacion - Unit 5
1 parent 8f24803 commit eaccb2b

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package unit05.Actividad22_Aplicacion;
2+
3+
import java.util.Arrays;
4+
5+
/*
6+
La fusión de dos tablas ordenadas consiste en copiar todos sus elementos (de ambas tablas) en una tercera que deberá seguir ordenada.
7+
Podemos realizar una fusión «ineficiente» copiando los elementos de ambas tablas (sin tener en cuenta el orden) en la tabla final y ordenar esta.
8+
Existe una manera óptima de realizar la fusión en la que se elige en cada momento el primer elemento no copiado de alguna de las tablas y
9+
se añade a la tabla final, que seguirá ordenada sin necesidad de ordenación alguna.
10+
Busca información sobre el algoritmo de fusión e impleméntalo en Java.
11+
*/
12+
public class Actividad22 {
13+
public static void main(String[] args) {
14+
int[] tabla1 = {1, 3, 5, 7, 9};
15+
int[] tabla2 = {2, 4, 6, 8, 10, 5};
16+
17+
int[] tabla3 = mergeTabla(tabla1, tabla2);
18+
System.out.println("Tabla 1: " + Arrays.toString(tabla1));
19+
System.out.println("Tabla 2: " + Arrays.toString(tabla2));
20+
System.out.println("Tabla 3: " + Arrays.toString(tabla3));
21+
}
22+
23+
private static int[] mergeTabla(int[] tabla1, int[] tabla2) {
24+
int[] tabla3 = tabla1; // Copiamos la tabla1 en la tabla3
25+
26+
for (int j : tabla2) { // Recorremos la tabla2
27+
int index = Arrays.binarySearch(tabla3, j); // Buscamos el elemento de la tabla2 en la tabla3
28+
if (index < 0) { // Si no lo encuentra, devuelve un número negativo
29+
index = -index - 1; // Obtenemos el índice donde debería estar el elemento
30+
}
31+
// Copiamos la tabla3 en la tabla3, desde el índice hasta el final, en la tabla3, desde el índice + 1 hasta el final
32+
tabla3 = Arrays.copyOf(tabla3, tabla3.length + 1);
33+
System.arraycopy(tabla3, index, tabla3, index + 1, tabla3.length - index - 1); // Desplazamos los elementos
34+
tabla3[index] = j; // Insertamos el elemento de la tabla2 en la tabla3
35+
}
36+
return tabla3;
37+
}
38+
}

0 commit comments

Comments
 (0)