11/17/2007

Ordena Burbuja en Java

Dos versiones del algoritmo de ordenación burbuja en Java. Descomentar la llamada del método para probar una u otra.

class OrdenaAlgoritmo {
    public static void ordenar( int [] arreglo) {
 int pasadas = 0;
 int comparaciones = 0;
 for (int i = 0; i < arreglo.length; i++) {
     ++pasadas;
     for (int j = 0; j < arreglo.length - 1; j++) {
  ++comparaciones;
  if (arreglo[j] > arreglo[j + 1]) {
      intercambiar(arreglo, j, j+1);
  }
     }
 }
 estadisticas(pasadas, comparaciones);
    }

    public static void ordenarMejorado( int [] arreglo) {
 int pasadas = 0;
 int comparaciones = 0;
 boolean hayCambios = true;
 for (int i = 0; hayCambios ; i++) {
     ++pasadas;
     hayCambios = false;
     for (int j = 0; j < arreglo.length - 1; j++) {
  ++comparaciones;
  if (arreglo[j] > arreglo[j + 1]) {
      intercambiar(arreglo, j, j+1);
      hayCambios = true;
  }
     }
 }
 estadisticas(pasadas, comparaciones);
    }

    private static void intercambiar(int [] arreglo, int a, int b) {
 int tmp = arreglo[a];
 arreglo[a] = arreglo[b];
 arreglo[b] = tmp;
    }

    private static void estadisticas( int pasadas, int comparaciones) {
 System.out.println( "Pasadas: " + pasadas );
 System.out.println( "Comparaciones: " + comparaciones );
    }
}


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

 int [] valores = {15,35,01,05,04,03,19,45,13,02,55,8,
    78,997,451,546,12,16,24,103,99,784,
    4541,15};

 //OrdenaAlgoritmo.ordenar(valores);
 OrdenaAlgoritmo.ordenarMejorado(valores);
 // Mostrar arreglo.
 for (int i = 0; i < valores.length ; i++)
     System.out.println ( "valores["+i+"]: "+  valores[i]);
 
    }
}

3 comentarios:

fuego246 dijo...

ola esta muy bueno tu ejemplo, ahora quiero que me ayudes a compara dos vectores ver si los elementos se repiten y colocarlos en otro vector, en otras palabras la interseccion de los vectores...

Edwin Reyes dijo...

gracias por la ayuda, lo mejore, con la opción que el usuario ingrese el tamaño del array y los datos

package ardenamiento.burbuja.estructuras;

import java.util.*;// importamos las librerias de java

public class ArdenamientoBurbujaEstructuras {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner ingre = new Scanner(System.in);//Creamos el lector de datos(Scanner).
int i, ingreso;//Posteriormente declaramos las variables

System.out.println( "Introduce tamaño del arreglo: " );//Pedimos el numero de elementos del arreglo
ingreso = ingre.nextInt();//convertimos los datos
int burbuja[] = new int[ingreso];// declaramos el arreglo.
for( i = 0; i < ingreso; i++ ){//Con la condicion for llenaremos el arreglo
System.out.println( "Introduce el valor "+(i+1)+" : ");// solicitamos los valores
burbuja[i] = ingre.nextInt();//Se introducen los numeros y se guardan.
}

// llamada del metodo
// para llamar cualquiera de los dos metodo quitar las plecas de comentatio

algoritmo_ordena .ordenar(burbuja);
//algoritmo_ordena .ordenarMejorado(burbuja);
}
}
class algoritmo_ordena {
public static void ordenar( int [] arreglo) {// se declara la clase
int pasadas = 0;
int comparaciones = 0;
for (int i = 0; i < arreglo.length; i++) {
++pasadas;
for (int j = 0; j < arreglo.length - 1; j++) {
++comparaciones;
if (arreglo[j] > arreglo[j + 1]) {
intercambiar(arreglo, j, j+1);
}
}
}
resultado(pasadas, comparaciones);
}

public static void ordenarMejorado( int [] arreglo) { // se declara la clase
int pasadas = 0;
int comparaciones = 0;
boolean hayCambios = true;
for (int i = 0; hayCambios ; i++) {
++pasadas;
hayCambios = false;
for (int j = 0; j < arreglo.length - 1; j++) {
++comparaciones;
if (arreglo[j] > arreglo[j + 1]) {
intercambiar(arreglo, j, j+1);
hayCambios = true;
}
}
}
resultado(pasadas, comparaciones);
}

private static void intercambiar(int [] arreglo, int a, int b) {
int tmp = arreglo[a];
arreglo[a] = arreglo[b];
arreglo[b] = tmp;
}

private static void resultado( int pasadas, int comparaciones) {
System.out.println( "Pasadas: " + pasadas );//total de pasadas
System.out.println( "Comparaciones: " + comparaciones );// total de comparacion

}

}

Edwin Reyes dijo...
Este comentario ha sido eliminado por el autor.