Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/12/2015, 17:06
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Metodo Burbuja

Hola:

La verdad es que no estaba seguro muy bien de si estaba respondiendo a lo que preguntabas, pero por otro lado tu código más o menos funcionaba aunque tenía fallos en los intervalos de los bucles, y desde luego mostraba bien los resultados.

En mi opinión, puedes hacerle dos mejoras.
1.- Definir el tamaño del array con una constante, de forma que sólo hayas de cambiar ese valor cuando quieras tener diferentes tamaños.
2.- En el método de la burbuja, el mayor (o menor si es ese el criterio de ordenación) valor "flotará" hasta el extremo de la lista (de ahí el nombre). Eso quiere decir que en cada iteración, el último valor, y luego el penúltimo, etc...quedarán ordenados. Eso permite hacer una optimización, de forma que en cada iteración recorreré un elemento menos del array, ya que estos van quedando en su sitio definitivo.

Por lo tanto el bucle interior tendrá un recorrido cada vez menor en cada iteración
En código:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. const int numElementos = 5;
  7.  
  8. int main()
  9. {
  10.     int num[numElementos];
  11.  
  12.     for(int i=0; i<numElementos; i++)
  13.     {
  14.         cout << "Introduzca el numero: ";
  15.         cin >> num[i];
  16.     }
  17.     for (int i=0; i<numElementos; i++)
  18.     {
  19.         for (int j=0; j<numElementos-i; j++)//al restar el valor de i este bucle será menor en cada iteración
  20.         {
  21.             if (num[j+1]<num[j])
  22.             {
  23.                 int temp=num[j];
  24.                 num[j]=num[j+1];
  25.                 num[j+1]=temp;
  26.             }
  27.         }
  28.     }
  29.     for (int i=0; i<numElementos; i++)
  30.     {
  31.         cout << num[i] << " ";
  32.     }
  33.     cout << endl;
  34.     system("pause");
  35. }

Saludos!
__________________
Mi calculadora en Qt