Java - Ayuda con arreglos/ descripción del codigo

 
Vista:

Ayuda con arreglos/ descripción del codigo

Publicado por Lia (3 intervenciones) el 11/06/2020 05:51:58
package ArregloComun;
/* .

1)Dada dos listas ordenadas sin repeticiones muestre un nuevo arreglo de los elementos comunes.*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class ArregloComun {
 
    public static void main(String[] args) {
        int[] arregloA = {2, 4, 6, 9, 10}; //1ra lista
        int[] arregloB = {1, 2, 6, 7, 10}; //2da lista
        int[] arregloC = new int[3]; //lista con elementos comunes
        //usando
        int n = 0;
 
 
        for (int i = 0; i < arregloA.length; i++) {
            for (int j = 0; j < arregloB.length; j++) {
                if (arregloA[i] == arregloB[j]) {
                    arregloC[n] = arregloA[i];
                    n++;
                    break;
                }
            }
        }
// Ya luego recorre el tercer arreglo para imprimirlo
        System.out.println("Arreglo común: ");
        for (int i = 0; i < arregloC.length; i++) {
            System.out.print(" " +arregloC[i]);
 
 
    }
        System.out.println(" ");
 
    }
}

Como podría hacerse la explicación antes del código y también como podría ser la explicación del código.
Ejem:
Antes de código:
Primero debemos crear dos arreglos ordenados y uno tercero donde estarán los elementos comunes de los dos arreglos. Después crearemos dos for aninados que recorrerán los arreglos A y B, y dentro de ellos habrá una condición que hará comparar cada elemento de los dos arreglos y si la condición es verdadera...

Ayúdenme por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.786
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con arreglos/ descripción del codigo

Publicado por Rodrigo (483 intervenciones) el 11/06/2020 14:52:08
No se si el codigo lo hizo alguien mas y tienes que describir lo que alguien mas hizo?
La pregunta es porque lo que se esta haciendo es una manera ineficiente de resolver el problema.

Estas desaprovechando que los arreglos estan ordenados.

Al considerar que los arreglos estan ordenados, la busqueda de repetidos se puede hacer moviendose en ambos arreglos sin volver atras en ninguno de ellos, comparando el "primer" elemento de cada lista, cada vez que son distintos avanzar en la lista con valor menor, avanzar en ambas, si son iguales y detenerse cuando alguna de las listas se acabe

1
2
3
4
5
6
7
8
9
10
[ 2 4 6 9 10 ]   [ 1 2 6 7 10 ] -> l1 > l2, l2 menor, avanzar en lista 2
  ^                ^
[ 2 4 6 9 10 ]   [ 1 2 6 7 10 ] -> iguales, agregar a lista final el numero 2, avanzar ambas listas
  ^                  ^
[ 2 4 6 9 10 ]   [ 1 2 6 7 10 ] -> l1 < l2, l1 menor, avanzar en lista 1
    ^                  ^
[ 2 4 6 9 10 ]   [ 1 2 6 7 10 ] ->  iguales, agregar a lista final el numero 6, avanzar ambas listas
      ^                ^
[ 2 4 6 9 10 ]   [ 1 2 6 7 10 ] -> ...
        ^                ^
asi hasta que elguna de las listas se acabe

Estaria lista la explicacion, te faltaria el codigo, te lo dejo como desafio. Deberia ser directo, dada la explicacion.
Ayuda: 2 indices, un ciclo while con 2 condiciones posibles de salida (el que termine alguna de las 2 listas), en cada vuelta preguntas por el elemento actual de cada lista y haces lo indicado arriba.
Del codigo mostrado en tu solucion puedes tomar prestado el uso de un 3er indice que sera el lugar donde agregues a la tercera lista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar