Java - alguien podria ayudarme a entenderlo ?

 
Vista:

alguien podria ayudarme a entenderlo ?

Publicado por jose (1 intervención) el 22/01/2020 19:52:48
2. El siguiente código agrega a una lista de enteros ArrayList 9999 números... (2 puntos)
1
2
3
4
5
ArrayList<Integer> numbers = new ArrayList<Integer>();
 
for(int i=0; i<10000; i++){
    numbers.add(new Integer(i));
}

Quita de esa lista el 9997 el 8000 y el 9995 de la forma más óptima, comprobando el valor con un bucle
¿Cuantas iteraciones (ejecuciones del un bucle o sentencias) se van a producir en el bucle para resolver el problema citado en el punto a?
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
sin imagen de perfil
Val: 186
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

alguien podria ayudarme a entenderlo ?

Publicado por Juan (70 intervenciones) el 23/01/2020 17:39:21
Buenas, imagino que el código si sabras lo que hace no? lo que te están pidiendo es que recorras el arreglo de enteros que ese código a creado y compares los valores con los que debes eliminar, y una vez encontrados eliminarlos del arreglo. Te pregunta cuantas interacciones son necesarias? es decir, cuantas veces tu programa va a comparar los números hasta conseguir el que quiere eliminar? y te dice que busques la forma mas optima de hacerlo, es decir la forma que tenga menos interacciones.

ejemplo:

1
2
3
4
5
6
7
8
9
10
public void eliminarNumero(int numero, ArrayList<Integer> numbers){
    int con=0;
    for (int i=0; i<numbers.size(); i++,con++){
        if (numero==numbers.get(i)){
            numbers.remove(i);
            System.out.println("Número de iteraciones: "+con);
            break;
        }
    }
}

Uso la variable "con" para contar las iteraciones. este es un método que recorre todo el array buscando un numero y lo elimina, las interacciones que haga serán iguales al número que busques.

otro ejemplo sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void eliminarNumero(int numero, ArrayList<Integer> numbers){
    if (numero>=5000){
        iteracion(5000,numero,numbers);
    }else{
        iteracion(0,numero,numbers);
    }
 
}
 
public static void iteracion(int num, int numero, ArrayList<Integer> numbers){
    int con =0;
    for (int i=num; i<numbers.size(); i++,con++){
        if (numero==numbers.get(i)){
            numbers.remove(i);
            System.out.println("Número de iteraciones: "+con);
            break;
        }
    }
 
}

Este otro ejemplo es un poco más largo, porque tiene un if antes que simplemente me pregunta si el numero es menor o mayor a 5000, de manera que si el número es mayor a 5000 la iteración la inicia en el 5000. y con el mismo numero a eliminar que usas en el ejemplo 1 te reduce 5000 iteraciones (siempre que el número sea mayor), esto no es ni lo mas efectivo, ni funciona siempre, esto es un simple ejemplo para que veas como por añadir un par de cosas haces 5000 mil iteraciones menos en el bucle. ahora lo que tienes es que pensar esto, cual es la solución más efectiva que te realice las menos iteraciones posibles? tienes que buscar las diferentes opciones que tienes y ver cual es la mejor.

No es el mejor programa, simplemente era para explicar un poco a que se refiere el ejercicio. el programa tendrás que pensarlo y hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar