Algoritmos de ordenación. Metodo de la Burbuja

ALGORITMO DE LA BURBUJA

El algoritmo de la burbuja es uno de los métodos de ordenación más conocidos y uno de los primeros que aprenden los programadores.

Consiste en comparar pares de elementos adyacentes en un array y si están desordenanos intercambiarlos hasta que estén todos ordenados.

Si A es el array a ordenar, se realizan A.length-1 pasadas. Si la variable i es la que cuenta el número de pasadas, en cada pasada i se comprueban los elementos adyacentes desde el primero hasta A.length-i-1 ya que el resto hasta el final del array están ya ordenados. Si los elementos adyacentes están desordenados se intercambian.

El método de ordenación de la burbuja en java para ordenar un array A es el siguiente:
public static void burbuja(int[] A) {
        int i, j, aux;
        for (i = 0; i < A.length - 1; i++) {
            for (j = 0; j < A.length - i - 1; j++) {                                                              
                if (A[j + 1] < A[j]) {
                    aux = A[j + 1];
                    A[j + 1] = A[j];
                    A[j] = aux;
                }
            }
        }
}
Ejemplo de ejecución:


Ya están ordenados, pero los dos bucles for seguirán ejecutándose hasta el final.
El tiempo de ejecución del algoritmo de la burbuja es del orden O(n2)
Es uno de los peores algoritmos de ordenación en cuanto a tiempo de ejecución, solamente es recomendable su uso para ordenar listas con un número pequeño de elementos.


81 comentarios:

  1. Estoy impresionado por la sencillez de tus cursillos. Muchas gracias.

    ResponderEliminar
  2. el procedimiento esta mal. Si en el segundo for, en la condicion se le resta a la longitud del vector "i" y a su vez se le resta 1 (A.length-i-1) en la primera vuelta causaria error, ya que si la longitud (tomando el ejemplo dado aqui) del vector es 6 y j inicia en 0, el segundo for llegaria hasta 6-0-1, osea hasta 5, y cuando entre al if y compare A[j+1] va a tirar un error de fuera de indice, porque estaria buscando la posicion 6, que no existe.
    Para que el metodo funcione apropiadamente, en el segundo for, la condicion debe ser j<A.length-2, si se realiza asi, el metodo funciona a la perfeccion y no tira errores.

    ResponderEliminar
    Respuestas
    1. Fíjate que la condición del segundo for es j<A.length-i-1. Con una longitud 6, en la primera vuelta este for empieza con j = 0 y se repite mientras j < 6-0-1 o sea mientras j < 5. Cuando j vale 5 este for no se realiza. Si lo ejecutas comprobarás que funciona correctamente.
      Un saludo y gracias por seguir el blog.

      Eliminar
    2. El comentario anterior tiene razón, lo ejecuté y tu código lanza una ArrayIndexOutOfBoundsException, el código no funciona del todo bien, pero muy buen aporte aún así

      Eliminar
    3. Lo acabo de ejecutar para comprobarlo y a mí me funciona sin errores. Sabes en qué línea da el error? Si puedes escribe el código completo con el main del programa que estás usando para poder descubrir donde está el error.
      Saludos

      Eliminar
    4. Me funciono correctamente y sin ningún tipo de error el utilizar for(j=0;j<A.length-i-1;j++). Usando el j<A.length-2, que sugiere el primer comentario ignora al último número del siguiente arreglo:
      2 8 9 6 5 1 3 7 4

      Eliminar
  3. PLISS QUISIERA SABER COMO PUEDE RESOLVER ESTE EJERCICIO ME FALTA LA ULTIMA PARTE
    package MisAplicaciones;

    /** APP QUE PERMITA REGISTRAR LA EDAD
    * DE 5 PERSONAS Y MUESTRE UNA LISTADO
    * DE EDADES EN ORDEN DESCEBDENTE(EMPLEAR VECTOR)
    */
    import java.util.Vector;
    import java.util.Scanner;
    public class PruevaVector
    {
    public static void main(String[] xx)
    { //CREA OBJETO VECTOR
    Scanner sc= new Scanner(System .in);
    Vector vec1= new Vector();
    vec1.addElement(17);
    vec1.addElement(15);
    vec1.addElement(18);
    vec1.addElement(25);
    vec1.addElement(45);
    System.out.println("LAS EDADES INGRESADAS SON:");
    for(int x=0;x<vec1.size();x++)

    {
    System.out.println("la edad es: "+vec1.elementAt(x));

    }

    }

    }

    ResponderEliminar
    Respuestas
    1. Te iba ayudar pero vi la fecha y dije nel ya no le sirve

      Eliminar
    2. ayuda a mi si me sirve

      Eliminar
  4. CONFIRMO QUE EL CODIGO FUNCIONA, LO USE EN MI APP JAVA Y FUNCIONO PERFECTO SIN ERRORES!

    ResponderEliminar
  5. Más facil e intuitivo:
    for (int i = 0; i < nums.length; i++) {
    for (int j = i + 1; j < nums.length; j++) {

    if (nums[i] > nums[j]) {
    aux = nums[i];
    nums[i] = nums[j];
    nums[j] = aux;

    }
    }
    }

    ResponderEliminar
    Respuestas
    1. Muchas gracias, me sirvió mucho

      Eliminar
    2. Hola, gracias por dejar el comentario. Este código que propones ordena pero no por el método de la burbuja. El método de la burbuja compara cada elemento con el que tiene a justo a continuación y si están desordenados los intercambia. El código que tu propones compara un elemento con todos los demás hasta el final y si es mayor lo intercambia.

      Eliminar
    3. Tienes razón Enrique a veces nos exigen utilizar un método especifico para resolver un problema o ejercicio y en este caso no lleva burbuja , así que tu procedimiento esta mejor. Muy buen aporte viejo.

      Eliminar
  6. hay les va otro código para lo mismo. también muestra las pasadas.

    public class Burbuja {


    public static void main(String[] args) {
    int [] arre={1, 23, 10, 9, 5};
    burbuja (arre);
    }

    public static void burbuja(int [] A){
    int j,k, aux;
    boolean f=false;
    String pasada="";
    for (k=0;k<A.length;k++) {
    for(j=1;j<A.length;j++) {
    if(A[j]<A[j-1]){
    aux=A[j];
    A[j]=A[j-1];
    A[j-1]=aux;
    System.out.println("A[j]="+A[j]+" A[j-1]="+A[j-1]+" AUX="+aux);
    for(int i=0;i<A.length;i++){
    pasada+=" "+Integer.toString(A[i]);
    }
    System.out.println("Arreglo A={" +pasada+" }");
    pasada="";

    }

    }
    }

    }
    }

    ResponderEliminar
    Respuestas
    1. falta el main,,, ese como va??? ayudame plis,, es el unico error que me marca que falta la estructura main,,,, tu programa no marco ningun error,,, solo eso pasame el main plis,,,

      Eliminar
    2. el codigo funciona
      pero yo quisiera saber como le hago para que se pueda agregar valores

      Eliminar
    3. En este codigo pide que 5 usuarios ingresen su edad y esta imprime las 5 edades de mayor a menor, este le puede servir al amigo Anónimo que preguntaba por uno donde se pueda agregar valores.

      package javaapplication11;
      import java.util.Scanner;
      public class JavaApplication11 {
      public static void main(String[] args) {
      int arr[]=new int [5];
      Scanner sc=new Scanner(System.in);
      for(int i=0;i<arr.length;i++)
      {
      System.out.println("ingrese numero "+ i);
      arr[i]=sc.nextInt();
      }
      for(int i = 0; i < arr.length - 1; i++)
      { for(int j = 0; j < arr.length - 1; j++) {
      if (arr[j] < arr[j + 1])
      {
      int tmp = arr[j+1];
      arr[j+1] = arr[j];
      arr[j] = tmp;
      }
      }
      }
      for (int i = 0; i < arr.length; i++) {
      if (i==0) {
      System.out.println("El mayor es: "+arr[i]);
      }
      else if (i==4) {
      System.out.println("Y el Menor es: " +arr[i]);
      }else
      System.out.println("El siguiente es: "+arr[i]);
      }
      }

      }

      Eliminar
  7. Viejito como ordeno la diagonal principal de una matriz gracias

    ResponderEliminar
  8. Hola, he probado tu algoritmo tal como esta y funciona de maravilla. tanto en orden ascendente como en descendente.


    saludos.

    ResponderEliminar
  9. a la verdad que el primero esta bien yo estudio ingenieria informatica pero este nivel esta muy por debajo del mio eso lo daba cuando estudiaba DPOO ahora en estructura de datos no se hace asi ya luego le cuelgo el codigo para que lo vean es mucho mejor

    ResponderEliminar
    Respuestas
    1. Gracias por el comentario. Este algoritmo y en general todos lo ejercicios que aparecen en este blog están dirigidos a aquellos que están empezando en el mundo de la programación. Como dices, se estudian en niveles básicos de programación estructurada y orientada a objetos y son la base para luego poder continuar con niveles más avanzados ;)

      Eliminar
  10. pues a mi me marca error,,, en donde esta el punto y coma,,,,,,

    ResponderEliminar
  11. y en la sentencia void int... tambien ahi marca error,,,,,

    ResponderEliminar
  12. a qui les dejo uno chequenlo

    import javax.swing.*;

    public class burbuja{

    static int arre[];
    int n;
    int aux ;
    public burbuja(){

    n=Integer.parseInt(JOptionPane.showInputDialog("dame el tamaño de el arreglo"));
    arre=new int [n] ;

    }

    public void captura (){
    int ele;

    for (int i=0; i arre[j+1] ){

    aux=arre[j];
    arre[j]=arre[j+1];
    arre[j+1]=aux;
    }
    }





    }

    }
    public void imprimir(){
    System.out.println ("el vector quedadela siguiente forma ");
    for(int k=0; k<n;k++){

    System.out.println ("elemento del vector "+k+" "+ arre[k]);

    }
    }
    public static void main (String[] args) {

    burbuja prueva=new burbuja();
    prueva.captura();

    prueva.ordenar ();
    prueva.imprimir();

    }
    }

    ResponderEliminar
  13. alguien me puede ayudar con el tema de arreglos ,métodos, propiedades get,lengt...
    gracias..

    ResponderEliminar
  14. burbujas para arraylist??? alquien sabe como
    aunq me encantaria un merge

    ResponderEliminar
    Respuestas
    1. En esta entrada tienes un ejemplo
      http://puntocomnoesunlenguaje.blogspot.com.es/2013/02/arraylist-de-objetos-en-java.html

      saludos

      Eliminar
  15. int aux=0.0;

    for(int j=0; j< datos.length-1;j++){
    for(int i=0; i < datos.length-1; i++){
    if(datos[i]>datos[i+1]){
    aux = datos[i+1];
    datos[i+1] = datos[i];
    datos[i]=aux;
    }
    }
    }

    ResponderEliminar
    Respuestas
    1. se me fue el 0.0 en la declaración de la variable aux, esque anteriormente la tenia declarada como doublé para un ejemplo diferente.. me funciona a la perfeccion este codigo

      Eliminar
  16. si alguno de estos elementos del array fuera nulo imaginando que los elementos del array son objetos de una clase determinada, se colocarian al final del array?

    ResponderEliminar
  17. jajajaja usa el meto array2[]=Array.sort(array[])

    ResponderEliminar
  18. En realidad este es el método burbuja, el que tu propones hace recorrer todo el vector la misma cantidad de veces que elementos tengas.. En un vector de 1 millon de elementos seria poco producente. Te dejo este código:

    public static void burbuja(int [] A){
    int i, j, aux;
    for(i=0;i<A.length-2;i++){
    j = i;
    while (i <= j) && (A[j+1]<A[j]) {
    aux=A[j+1];
    A[j+1]=A[j];
    A[j]=aux;
    j--;
    }
    }

    }

    ResponderEliminar
    Respuestas
    1. enrealidad a mi entendimiento, el metodo de la burbuja no es el bucle, si no
      aux=A[j+1];
      A[j+1]=A[j];
      A[j]=aux;
      el cambiar los valores del array, por el que guardas en el aux, para mi ese es el metodo de la burbuja :P el cual puede aplicarse a diferenten casos, jeje perdon si estoy equibocado, soy nuevo en esto ...

      Eliminar
  19. con Vector, el vector que utilizo es indefinido, osea que no tiene un tamaño fijo, solo sirve para reordenar. suponiendo que tiene una longitud de n elementos, lo obtenemos con size();
    Vector numeros = new Vector<>();
    int aux, longitud = numeros.size();
    for (int i = 0; i < longitud - 1 ; i++) {
    for (int j = 0; j < longitud -i -1; j++) {
    if (numeros.get(j+1)>numeros.get(j)) {
    aux = numeros.get(j+1);
    numeros.set(j+1,numeros.get(j));
    numeros.set(j, aux);
    }
    }
    }

    ResponderEliminar
  20. alguien me puede ayudar con esto:


    public static void main(String[] args) {
    Scanner read = new Scanner (System.in);

    int vec1[] = new int [10];
    int vec2[] = new int [10];
    int arreglos[] = new int [10];
    int aux=0, m=0, n=0;
    for (int i=0; i<vec1.length-1; i++)
    {
    System.out.println("1... digite 10 elementos");
    vec1[i]= Integer. parseInt(read.next());
    for (m=0; m<vec1.length-i-1;m++)
    {
    if (vec1[m+1]<vec1[m])
    {
    aux= vec1[m+1]=vec1[m];
    vec1[m+1]= vec1[m];
    vec1[m]= aux;
    }
    }
    }
    for (int i=0; i<vec2.length-1; i++)
    {
    System.out.println("2... digite 10 elementos");
    vec2[i]= Integer. parseInt(read.next());
    for (n=0; n<vec2.length-i-1;n++)
    {
    if (vec2[n+1]<vec1[n])
    {
    aux= vec2[n+1]=vec2[n];
    vec2[n+1]= vec2[n];
    vec2[n]= aux;
    }
    }
    }
    esto es lo que tengo y debo ordenarlos de menor a mayor

    ResponderEliminar
    Respuestas
    1. asi dice el ejercicio:
      Se tienen dos arreglos unidimensionales. Uno de ellos con 10 elementos y, el otro con 10 elementos. Los elementos de los dos arreglos se encuentran ordenados en forma ascendente. Elabore un algoritmo que entre los dos vectores se forme uno nuevo de N + M elementos, el cual contendrá los elementos de los dos arreglos ordenados de menor a mayor.

      Eliminar
  21. porfa me puedes ayudar con este algoritmo me piden que organice los usuarios de las maquinas por edades y que elimine un usuario y luego se actualice el algoritmo

    //1)ENCUENTRE Y MUESTRE TODOS LOS DATOS DE UNA MAQUINA EN PARTICULAR
    //2) LOS DATOS DE LA MAQUINA QUE MANIPULA UN OPERARIO EN PARTICULAR
    //3) EL NUMERO DE SEXO MASCULINO O FEMENINO

    #include
    #include
    #include
    using namespace std;

    const
    int L=4;
    const
    int La=10;

    struct Maquina
    {
    int codigom;
    string nombre;
    int htdiario;
    };
    struct buscar
    {
    int codigom;
    };
    struct organizaro
    {
    int edad;

    };
    struct Operario
    {
    int codigoo;
    string nombre;
    int edad;
    string sexo;
    int codigom;
    };

    Maquina vm[L];
    Operario vo[La];
    buscar vb[L];
    int pm=-1;
    int po=-1;

    int buscarm(int codigo)
    {
    int encontrado,i;
    encontrado=-1;
    for(i=0;i<=pm;i++)
    {
    if(codigo==vm[i].codigom)
    encontrado=i;
    if(encontrado!=-1)
    break;
    }
    return(encontrado);
    }

    void Llenarm()
    {
    Maquina tmp;
    int p;
    if(pm>tmp.codigom;
    cout<<"Digite nombre"<>tmp.nombre;
    cout<<"Digite duracion"<>tmp.htdiario;
    if(pm==-1)
    {
    pm=pm+1;
    vm[pm]=tmp;
    }
    else
    {
    p=buscarm(tmp.codigom);
    if(p!=-1)
    {
    cout<<"El codigo ya existe"<>tmp.codigoo;
    cout<<"..................."<>tmp.nombre;
    cout<<"..................."<>tmp.edad;
    cout<<"..................."<>tmp.sexo;
    cout<<"..................."<>tmp.codigom;

    if(po==-1)

    {
    bm=buscarm(tmp.codigom);
    if(bm==-1)
    cout<<"El programa no existe"<>tmp.codigom;
    if (pm==-1)
    bb=buscarm(tmp.codigom);
    if(bb==-1)
    cout<<"El programa no existe"<>codigoM;
    for(i=0;i<=po;i++)
    {
    if(vo[i].codigom==codigoM){
    tmp1=vo[i];
    cout<>codigoA;
    tmp1=buscaro(codigoA);
    for(i=0;i<=po;i++)
    {
    if(vo[tmp1].codigoo==vm[i].codigom){
    cout<>sexoo;
    for(i=0;i<=po;i++)
    {
    if(vo[i].sexo==sexoo){
    cont++;
    }
    }
    cout<<"las personas con sexo "<>op;
    do
    {
    if(op==1)
    {
    Llenarm();
    system("cls");
    }
    else
    if(op==2)
    {
    llenarO();
    system("cls");
    }
    else
    if(op==3)
    {
    system("cls");
    MostrarM();

    }
    else
    if(op==4)
    {
    system("cls");
    MostrarO();

    }

    else
    if (op==5)
    {
    system("cls");
    MostrarOp_Ma();

    }
    else
    if(op==6)
    {
    system("cls");
    MostrarMS();
    }
    else
    if(op==7)
    {
    system("cls");
    MostrarS();
    }
    else
    system("cls");

    cout<<"HOLA BIENVENIDO REVISE EL SIGUIENTE MENU "<>op;
    }while((op>=1)&&(op<=7));

    exit(0);
    return(0);
    }

    ResponderEliminar
  22. 1. Determinar la solución del sgte problema a través de Java y Diagrama de Flujo usando estructuras repetitivas while, do-while. (10ptos).

    Diseñar un programa para mostrar en pantalla los cubos de los 10 primeros números enteros y también la suma total de ellos.
    ayudenme xfa

    ResponderEliminar
  23. me podrían ayudar a realizar estos problemas, se los agradecería muchisimo!
    Elaborar un algoritmo el cual me permita ingresar los empleados y obreros

    que trabajan en una empresa la cual me permita registrar a 10 empleados y

    10 obreros, se debe tomar en cuenta su nombre apellido paterno y apellido

    materno hora de entrada y salida y años de trabajo

    2. Debe poder ordenar los empleados u obreros por medio del método de

    burbuja.

    3. Debe poder buscar a los empleados u obreros por medio de la búsqueda

    secuencial.

    4. Realizar un análisis de algoritmo el cual incluya lo siguiente.

    a. Orden de complejidad

    b. Impacto practico

    c. Sentencias

    d. Secuencias

    e. Decisiones

    f. Bucles

    ResponderEliminar
  24. necesito ordenar este array en orden acendente prodria alguien porfavor ayudarme



    import java.util.*;

    public class ArrayAlex {


    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    //Variables

    int Promedio;
    int i;
    //Array
    int[] Vect = new int[10];

    //lectura de datos y llenar el array
    System.out.println("Lectura de los Numeros del Array: ");
    for (i = 0; i < 10; i++) {
    System.out.print("Numero[" + i + "]= ");
    Vect[i] = sc.nextInt();




    }
    Promedio=Vect[9]+Vect[8]+Vect[7]+Vect[6]+Vect[5]+Vect[4]+Vect[3]+Vect[2]+Vect[1]+Vect[0]/10;

    //Decendente
    System.out.println("Orden Decendente:");
    System.out.println(Vect[9] +" "+ Vect[8] +" "+ Vect[7] +" "+ Vect[6] +" "+ Vect[5] +" "+ Vect[4] +" "+ Vect[3] +" "+ Vect[2] +" "+ Vect[1] +" "+ Vect[0]);


    //Acendente
    System.out.println("Orden Acendente:");
    System.out.println(Vect[0] +" "+ Vect[1] +" "+ Vect[2] +" "+ Vect[3] +" "+ Vect[4] +" "+ Vect[5] +" "+ Vect[6] +" "+ Vect[7] +" "+ Vect[8] +" "+ Vect[9]);

    //Mayor
    System.out.println("Numero Mayor:");
    System.out.println(Vect[9]);

    //Menor
    System.out.println("Numero Menor:");
    System.out.println(Vect[0]);

    //Promedio
    System.out.println("Promedio:");
    System.out.println(Promedio);
    }
    }

    ResponderEliminar
  25. Alguien podria ayudarme con algo más sencillo que los demás, voy aprendiendo el metodo burbuja pero necesito un ejercicio que dice así:
    Llenar un arreglo vectorial con 5 números y después acomodarlos de menor a mayor
    Soy nueva en todo esto, hice un codigo con todo lo que he leido pero me marca error
    //Este codigo es solo la parte donde ya estoy acomodando los números ingresados//

    int aux;
    boolean Cam = false;
    while (true);
    {
    Cam = false;
    for(int i = 1; i < array.length; i++)
    {
    if (array [i] < array [i-1])
    {
    aux = array [i];
    array [i] = array [i-1];
    array [i-1] = aux;
    Cam = true;
    }
    }
    if(Cam = false)
    break
    }

    //Si me ayudan se los agradeceria mucho

    ResponderEliminar
  26. Hola a todos quisiera hacer un metodo burbuja como lo hago tengo este pero quiero ordenarlos de arriba hacia abajo ayudenme por favor
    import java.io.*;

    public class burbuja
    {
    public static void main(String arg[]) throws IOException
    {
    /*creacion del objeto para leer por teclado*/
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    /*ingreso del tamaño de arreglos*/
    System.out.print("\n Ingrese Numero de Datos a Ingresar : ");
    int tam = Integer.parseInt(in.readLine());
    /*creacion del arreglo*/
    int arr[] = new int[tam];
    System.out.println();
    /*lectura del arreglo*/
    int j = 0;
    for (int i = 0 ; i < arr.length;i++)
    {
    j+=1;
    System.out.print("Elemento " + j + " : ");
    arr[i] = Integer.parseInt(in.readLine());
    }
    burbuja(arr);
    }

    static void burbuja(int arreglo[])
    {
    for(int i = 0; i < arreglo.length - 1; i++)
    {
    for(int j = 0; j < arreglo.length - 1; j++)
    {
    if (arreglo[j] < arreglo[j + 1])
    {
    int tmp = arreglo[j+1];
    arreglo[j+1] = arreglo[j];
    arreglo[j] = tmp;
    }
    }
    }
    for(int i = 0;i < arreglo.length; i++)
    {
    System.out.print(arreglo[i]+"\n");
    }
    }
    }

    ResponderEliminar
  27. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  28. Hola a todos quisiera hacer un metodo burbuja como lo hago tengo este pero quiero ordenarlos de arriba hacia abajo ayudenme por favor
    import java.io.*;

    public class burbuja
    {
    public static void main(String arg[]) throws IOException
    {
    /*creacion del objeto para leer por teclado*/
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    /*ingreso del tamaño de arreglos*/
    System.out.print("\n Ingrese Numero de Datos a Ingresar : ");
    int tam = Integer.parseInt(in.readLine());
    /*creacion del arreglo*/
    int arr[] = new int[tam];
    System.out.println();
    /*lectura del arreglo*/
    int j = 0;
    for (int i = 0 ; i < arr.length;i++)
    {
    j+=1;
    System.out.print("Elemento " + j + " : ");
    arr[i] = Integer.parseInt(in.readLine());
    }
    burbuja(arr);
    }

    static void burbuja(int arreglo[])
    {
    for(int i = 0; i < arreglo.length - 1; i++)
    {
    for(int j = 0; j < arreglo.length - 1; j++)
    {
    if (arreglo[j] < arreglo[j + 1])
    {
    int tmp = arreglo[j+1];
    arreglo[j+1] = arreglo[j];
    arreglo[j] = tmp;
    }
    }
    }
    for(int i = 0;i < arreglo.length; i++)
    {
    System.out.print(arreglo[i]+"\n");
    }
    }
    }

    ResponderEliminar
  29. Hola a todos quisiera hacer un metodo burbuja como lo hago tengo este pero quiero ordenarlos de arriba hacia abajo ayudenme por favor
    import java.io.*;

    public class burbuja
    {
    public static void main(String arg[]) throws IOException
    {
    /*creacion del objeto para leer por teclado*/
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    /*ingreso del tamaño de arreglos*/
    System.out.print("\n Ingrese Numero de Datos a Ingresar : ");
    int tam = Integer.parseInt(in.readLine());
    /*creacion del arreglo*/
    int arr[] = new int[tam];
    System.out.println();
    /*lectura del arreglo*/
    int j = 0;
    for (int i = 0 ; i < arr.length;i++)
    {
    j+=1;
    System.out.print("Elemento " + j + " : ");
    arr[i] = Integer.parseInt(in.readLine());
    }
    burbuja(arr);
    }

    static void burbuja(int arreglo[])
    {
    for(int i = 0; i < arreglo.length - 1; i++)
    {
    for(int j = 0; j < arreglo.length - 1; j++)
    {
    if (arreglo[j] < arreglo[j + 1])
    {
    int tmp = arreglo[j+1];
    arreglo[j+1] = arreglo[j];
    arreglo[j] = tmp;
    }
    }
    }
    for(int i = 0;i < arreglo.length; i++)
    {
    System.out.print(arreglo[i]+"\n");
    }
    }
    }

    ResponderEliminar
  30. Hola a todos quisiera hacer un metodo burbuja como lo hago tengo este pero quiero ordenarlos de arriba hacia abajo ayudenme por favor
    import java.io.*;

    public class burbuja
    {
    public static void main(String arg[]) throws IOException
    {
    /*creacion del objeto para leer por teclado*/
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    /*ingreso del tamaño de arreglos*/
    System.out.print("\n Ingrese Numero de Datos a Ingresar : ");
    int tam = Integer.parseInt(in.readLine());
    /*creacion del arreglo*/
    int arr[] = new int[tam];
    System.out.println();
    /*lectura del arreglo*/
    int j = 0;
    for (int i = 0 ; i < arr.length;i++)
    {
    j+=1;
    System.out.print("Elemento " + j + " : ");
    arr[i] = Integer.parseInt(in.readLine());
    }
    burbuja(arr);
    }

    static void burbuja(int arreglo[])
    {
    for(int i = 0; i < arreglo.length - 1; i++)
    {
    for(int j = 0; j < arreglo.length - 1; j++)
    {
    if (arreglo[j] < arreglo[j + 1])
    {
    int tmp = arreglo[j+1];
    arreglo[j+1] = arreglo[j];
    arreglo[j] = tmp;
    }
    }
    }
    for(int i = 0;i < arreglo.length; i++)
    {
    System.out.print(arreglo[i]+"\n");
    }
    }
    }

    ResponderEliminar
  31. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  32. Este es más eficiente:

    public static void burbuja(int [] A){
    int i, j, aux;
    boolean intercambios=true;
    for(i=0;i<A.length-1 && intercambios;i++)
    {
    intercambios=false;
    for(j=0;j<A.length-i-1;j++)
    if(A[j+1]<A[j])
    {
    aux=A[j+1];
    A[j+1]=A[j];
    A[j]=aux;
    intercambios=true;
    }
    }
    }

    ResponderEliminar
  33. Muy bueno su blog, muuuuchisimas gracias con mas experiencia hare aportes en esta pagina¡¡¡¡¡ Pulgar arriba¡¡¡¡

    ResponderEliminar
  34. alguien que me ayude a crear un programa

    ResponderEliminar
  35. Alguien que tenga el pseudocodigo de burbuja?

    ResponderEliminar
  36. como hago un programa que grave mi nombre y apellido en cualquier lado de un array bideimencional por separado y despues lo muestre es para graficamente

    ResponderEliminar
  37. import java.io.*;
    import java.util.*;
    import javax.swing.JOptionPane;
    public class burbuja{
    public static void main (String[]args) {
    int a,j,aux=0,n,n2;
    String num1,num2;
    boolean a2=false;
    int []numeros=new int[20];
    num1=JOptionPane.showInputDialog("¿Cuantos numeros vas a comparar?");
    n=Integer.parseInt(num1);
    while (true){

    for (int i=0;i<n;i++){
    num2=JOptionPane.showInputDialog("Ingresa el numero");
    n2=Integer.parseInt(num2);
    numeros[i]=n2;
    }
    int i;
    for(i=0;i<numeros.length-1;i++)
    for(j=0;j<numeros.length-i-1;j++)
    if(numeros[j+1]<numeros[j]){
    aux=numeros[j+1];
    numeros[j+1]=numeros[j];
    numeros[j]=aux;
    }
    if (a2==false)

    JOptionPane.showMessageDialog(null, numeros[i]);
    break;
    }
    }
    }

    ResponderEliminar
  38. Alguien me.podria ayudar en este ejercisio de java es netbean.....

    En la u.l.a(universidad de los andes) se conoce el numero de.alumnos que ingresan es sus 4 diferentes carreras de ingenieria
    (Civil,mecanica,eletrica y sistemas)en los ultimos 5 años.construya un programa que proporciones las siguientes informacion:

    a)total de alumnos por año .
    B)porcentaje de alumnos que ingresaron en.el.año X carrera Y.
    C)en que año y en que carrera se dio el menor ingreso de alumnos.
    D)en que año y en que carrera se dio el mayor..son de arreiglo bidimencionales....mi profesor lo quieres todo eso reflejado en una matriz....creo que como una nomina.........por favor le pido que me ayuden para poder pasar mi clase de introduccion ala programacion......sera que puedan hacerlo en clases ......este es mi correo romerobulls23@gmail.com....para que si pueden podrian mandar la carpeta del programa de netbean ahi ....por fa

    ResponderEliminar
  39. alguien me podria ayudar en este ejecicio es urgente: ordenar un vector de n elementos en java

    ResponderEliminar
  40. HOLA POR FAVOR NECESITO ESTO AHORA MISMO
    Métodos de Ordenamiento, Búsqueda y Complejidad Temp oral.
    (a)
    Crear la clase SortNSearch.
    (b)
    Crear un méto do nombrado xSort, el cual recib e p or parámetro un ArrayList de tip o compa-
    rable y lo ordena de la siguiente forma:

    La primera mitad es ordenada de forma ascendente con el méto do Inserción Directa.

    La segunda mitad es ordenada de forma descendente con el méto do de Burbuja.
    Ejemplo:
    El ArrayList de enteros [ 8 7 6 1 3 4 3 ] quedará de la forma [6 7 8 4 3 3 1]

    ResponderEliminar
  41. No creo que sea un sitio del tipo hazme la tarea (y gratis).

    ResponderEliminar
  42. QUISIERA QUE ME AYUDARAN CON ALGO ME MANDARON HACER UN PSEUDOCODIGO SOBRE ESTE EJERCISIO ORDENAR EL ARRAY(VECTOR): 42 57 14 40 96 19 08 68 POR LOS METODOS DE INSERCCION Y BURBUJA CADA VEZ QUE REORGANICE EL VECTOR, SE DEBE MOSTRAR EL NUEVO VECTOR REFORMADO

    ResponderEliminar
  43. Alguien sabe como hacer ese mismo metodo pero con arreglos bidimensionales?

    ResponderEliminar
    Respuestas
    1. Depende si quieres ordenar por filas o columnas. Se me ocurre que declares el procedimiento (burbuja) como una función a la cual invocar.

      Eliminar
  44. En ordenamiento de burbuja como sera de mayor a menor que mostrara los números

    ResponderEliminar
    Respuestas
    1. Para ordenar de mayor a menor con el método de la burbuja solo hay que cambiar el operador y escribir > en lugar de <
      if(A[j+1] > A[j]){
      ........

      Eliminar
  45. hola chicos disculpen con una pregunta un ingeniero nos dejo una tarea de que el usuario pidiera 5 numeros y 5 edades y en y que lo mostrara en pantalla en forma de matrices pero que para ordenarlo teniamos que usar el metodo burbuja yo queria ver si alguno de ustedes me puede ayudar porfavor ya hice la primera parte pero lo del metodo de burbuja eso si no se como espero sus respuestas. Gracias

    ResponderEliminar
  46. según wikipedia una burbuja es: Porción de aire u otro gas envuelta en una fina película de líquido o formada en el interior del mismo, que tiende a elevarse. , lo que significa que tu post está usando una falta muy grave y la RAE puede multarte con hasta 500.000eulos

    ResponderEliminar
  47. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  48. estaba buscando el método de la burbuja en varias paginas y el tuyo me funciono a la perfección.

    ResponderEliminar
  49. buenas necesito ayuda código que el usuario ingrese cuantos personas van a ingresar y que le pida el nombre y la edad y con el método burbuja me ordene la edad y a partir de eso muestres los nombres con su respectiva edad

    ResponderEliminar
  50. Desarrollar un programa que muestre una lista de espera de 10 pacientes, simulando un hospital con arreglos y el método de burbuja

    No

    Prioridad

    Paciente

    Enfermedad

    1

    Terapia intensiva

    Benito Juárez

    Sin brazo

    2

    Terapia intensiva

    Miguel hidalgo

    Sin pierna

    3

    Gravedad

    Josefa Ortiz

    Desmayo en el trabajo

    4

    Gravedad

    Melchor Ocampo

    Fractura pie

    5

    Atención médica

    Claudia Nodal

    Gripe


    Prioridad

    1.- Terapia intensiva

    2.- Gravedad

    3.- Atención médica

    Especificaciones

    · El hospital cuenta con un espacio para 10 pacientes

    · Tiene la capacidad de atender a pacientes de acuerdo a sus 3 prioridades

    · Si llega un paciente nuevo la lista de espera se mueve, según sea la prioridad de atención

    · Los que son PRIORIDAD 1 (Terapia Intensiva), deberán ser atendidos SIEMPRE, a menos que se hayan ocupado los 10 lugares.

    · Si hay 10 pacientes PRIORIDAD 1 o 2 y en lista hay pacientes PRIORIDAD 3, deberán salir de la lista, únicamente se QUEDAD PRIORIDAD 1 y 2.

    ResponderEliminar
  51. Dada el siguiente arreglo [2,9,5,8,12,4,7,25] realizar el ordenamiento empleando el método de la burbuja, el arreglo debe ser ordenado de manera ascendente (de menor a mayor)

    ResponderEliminar