Java - JAVA METODO BURBUJA no actualiza el arreglo y no imprime el arreglo actualizado

 
Vista:

JAVA METODO BURBUJA no actualiza el arreglo y no imprime el arreglo actualizado

Publicado por JAVA Metodo Burbuja (1 intervención) el 02/09/2022 05:15:30
Yo ya intente este programa de diferentes maneras, es u ejercicio que le falta codigo pero al momento de impriirlo no me actualiza el arreglo, y no puedo ver la forma de imprimir el arreglo ya actualizado:

package ClasesyObjetos;

import java.util.Arrays;

public class MetodoOrdenamieto {

public void imprimeArreglo(String mensaje, int[] arreglo) {

/* RELLENA AQUI */
System.out.println(mensaje);
System.out.println(Arrays.toString(arreglo));

}

public void saltoLinea() {
System.out.println("\n");
}


}





Mi clase MAIN
package ClasesyObjetos;


public class Main {
public static void main(String args[]) {

/* RELLENA AQUI */

int[] arreglo = {11, 9, 20, 23};

MetodoOrdenamieto objOrdena = new MetodoOrdenamieto();
objOrdena.imprimeArreglo("Arreglo inicial: ", arreglo);
objOrdena.saltoLinea();

for (int i = 0; i < arreglo.length; i++) {
System.out.println("i = " + i);

for (int j = 0; j < arreglo.length - 1; j++) {
objOrdena.imprimeArreglo(" Arreglo comparando: ", arreglo);
System.out.println(" <----- j = " + j + " -- " + arreglo[j] + " > " + arreglo[j + 1] + "?");


if (arreglo[j] > arreglo[j + 1]) {
System.out.println(" ------- Intercambia " + arreglo[j] + " con " + arreglo[j + 1]);

/* RELLENA AQUÍ */

for(int i = 0;i < arreglo.length; i++) {
objOrdena.imprimeArreglo(" Arreglo modificado: ", arreglo[i]);
objOrdena.saltoLinea();
}
}
}
}

objOrdena.saltoLinea();
objOrdena.imprimeArreglo("Arreglo final: ", arreglo);
}
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

JAVA METODO BURBUJA no actualiza el arreglo y no imprime el arreglo actualizado

Publicado por Kabuto (1381 intervenciones) el 02/09/2022 21:15:17
Porque tu código informa de cuándo hay que hacer un intercambio de valores...., pero no hace dicho intercambio.
Por eso al final el arreglo se queda igual.

Has de eliminar el tercer bucle for, porque no hace nada útil y además tiene dos errores de sintaxis:
1- No puede usar el como indice otra variable i, porque ya la está usando el primer for.
2- Al método imprimeArreglo() no le estás pasando el arreglo, sino un elemento del arreglo.

Pero vamos, esto no lo corrijas, simplemente elimínalo, y en su lugar pon el código que marco en negrita para que se haga el intercambio de valores:
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
31
32
public class Main {
	public static void main(String args[]) {
 
		int[] arreglo = {11, 9, 20, 23};
 
		MetodoOrdenamieto objOrdena = new MetodoOrdenamieto();
		objOrdena.imprimeArreglo("Arreglo inicial: ", arreglo);
		objOrdena.saltoLinea();
 
		for (int i = 0; i < arreglo.length; i++) {
			System.out.println("i = " + i);
 
			for (int j = 0; j < arreglo.length - 1; j++) {
				objOrdena.imprimeArreglo(" Arreglo comparando: ", arreglo);
				System.out.println(" <----- j = " + j + " -- " + arreglo[j] + " > " + arreglo[j + 1] + "?");
 
 
				if (arreglo[j] > arreglo[j + 1]) {
					System.out.println(" ------- Intercambia " + arreglo[j] + " con " + arreglo[j + 1]);
 
					//Intercambio de valores
					int aux = arreglo[j];
					arreglo[j] = arreglo[j + 1];
					arreglo[j + 1] = aux;
				}
			}
		}
 
		objOrdena.saltoLinea();
		objOrdena.imprimeArreglo("Arreglo final: ", arreglo);
	}
}

Verás que ahora el arreglo final sí queda ordenado.

Saludos.
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