Método de la "Burbuja"

El método de la burbuja es muy conocido por los programadores, y consistes en ordenar una serie de elementos por orden ascendente o descendente, según queramos que sea el caso.

Explicar como funciona es de lo mas sencillo, pues no es mas que tomar una serie de elementos numéricos, y compararlos en forma de arreglos para determinar quienes son mayores o menores.

/* Inicializacion de dos arreglos e impresion */
import java.util.*;
class Burbuja
{
public static void main (String arg[])
{
Scanner teclado=new Scanner (System.in);
int n,m,i;
System.out.print("Ingrese el numero de elementos: ");
n=teclado.nextInt();
int arr[]= new int [n];
for (i=0; i<n;i++)
{
System.out.print ("Ingrese el elemento: ");
arr[i]=teclado.nextInt();
}
imp_arreglo (arr);
System.out.println();
bubble (arr);
imp_arreglo (arr);
System.out.println();
System.out.print("Ingrese el numero de elementos: ");
m=teclado.nextInt();
int arr2[]= new int[m];
for (i=0; i<m; i++)
{
System.out.print("Ingrese el elemento: ");
arr2[i]=teclado.nextInt();
}
imp_arreglo (arr2);
System.out.println();
bubble (arr2);
imp_arreglo (arr2);
System.out.println();
}// fin del main ()
public static void imp_arreglo (int arr[])
{
for (int i=0; i<arr.length;i++)
System.out.print ("t"+ arr[i]);
}//fin de imp_arreglo

public static void bubble (int [] a)
{
for (int i=1; i<a.length;i++)
{
for(int j=0;j<a.length-1;j++)
{
if (a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}//fin de modificacion_arreglo
}//fin de inic_arreglo


Este es un ejemplo sencillo, en el cual tenemos 2 arreglos, los cuales son únicamente del tipo numérico, lo he preparado especialmente para que se vea claramente el código y como esta estructurado el método.

Vamos a explicar las líneas de código mas importantes:

- imp_arreglo(arr): no es mas que llamar al método "imp_arreglo", que se encarga de imprimir el arreglo por pantalla. "arr" y "arr2" son los nombres de las variable de arreglo que se envían al método para ser utilizados por el mismo.

- bubble(arr): esta es la llamada al método de la burbuja, le he puesto "bubble" ya que eso es lo que significa en inglés, burbuja. "arr" y "arr2", como ya lo explique, son las variables a utilizar por el método.

- "int [] a": esto nos retorna un valor del tipo entero, el cual se almacena el la variable a.

Esto que he preparado es un ejemplo muy sencillo, en el cual solo se utilizan valores numéricos del tipo entero, pero igualmente podemos modificar los métodos para que manejen mas valores y de distintos tipos.

Otro ejemplo que he preparado para que se entienda y se estudie mejor este método es el siguiente ejemplo:

class alumnosporaltura
{
public static void main (String arg[])
{  
String altura;
int n,i,m;

//cantidad de datos a pedir
String CANTIDAD=JOptionPane.showInputDialog("Ingrese el numero de alumnos: ");
n=Integer.parseInt(CANTIDAD);

//arreglos del programa para almacenar datos
Double arr[]= new Double [n];
String NOMBRES[]=new String[n];
String APELLIDOS[]=new String[n];
for (i=0; i<n;i++)
{
m=i+1; //para que el contador arranque desde 1 y no 0
JOptionPane.showMessageDialog(null,"Alumno #"+m);
altura=JOptionPane.showInputDialog("Ingrese la altura: ");
arr[i]=Double.parseDouble(altura);
NOMBRES[i]=JOptionPane.showInputDialog("Ingrese el nombre");                        
APELLIDOS[i]=JOptionPane.showInputDialog("Ingrese el apellido");
}
JOptionPane.showMessageDialog(null,"El orden por altura ascendente es:");
//llamando al método de la burbuja
bubble (arr);
imp_arreglo (arr,NOMBRES,APELLIDOS);  //se llaman los valores desde el metodo   
}// fin del main ()
public static void imp_arreglo (Double arr[], String NOMBRES[], String APELLIDOS[])
{//Inicio para mostrar el arreglo ya ordenado por pantalla                
for (int i=0; i<arr.length+1;i++)                
{
int m=i+1; //para que el contador comience en 1 y no 0
JOptionPane.showMessageDialog(null,"Alumno #"+m+"n"+"Altura: "+arr[i]+"n"+"Nombre: "+NOMBRES[i]+"n"+"Apellido: "+APELLIDOS[i]);
}                
}//fin de imp_arreglo

public static void bubble (Double [] a)
{//metodo de la burbuja
for (int i=1; i<a.length;i++)
{
for(int j=0;j<a.length-1;j++)
{
if (a[j] > a[j+1])
{
Double temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}//fin de modificacion_arreglo
}//fin de inic_arreglo


En este, se le pide al usuario la cantidad de alumnos o personas, se les pide la altura, nombre y apellido, y según la estatura que se tenga el programa se encarga de colocarlo de menor a mayor.

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión EmoticonEmoticon