Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Runex en 28 Abril 2012, 01:35 am



Título: Ordenación burbuja
Publicado por: Runex en 28 Abril 2012, 01:35 am
Buenas compañeros, estoy empezando otra vez con C++, me he acostumbrado a Python y se me está atascando  :-\.

Este es el código que llevo escrito:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int array[10],x=0,acumulador,y=0,z=0;
  7. while (x<10)
  8. {
  9. cin>>array[x];
  10. x = x + 1;
  11. }
  12. while (y<10)
  13. {
  14. if (array[y]>array[y+1])
  15. {
  16. acumulador = array[y];
  17. array[y] = array[y+1];
  18. array[y+1] = acumulador;
  19. y = y + 1;
  20. }
  21. }
  22. while (z<10)
  23. {
  24. cout<<array[z];
  25.                z = z + 1;
  26. }
  27. return 0;
  28. }

En la primera parte, donde se introducen los 10 números para el array, a pesar de que aumento la variable de bucle, nunca para de pedir dígitos :S.

Un saludo :)


Título: Re: Ordenación burbuja
Publicado por: Torino10 en 28 Abril 2012, 01:48 am
Te dejo un código para el ordenamiento burbuja bien optimizado.
Revisalo :)

Código
  1.     int vec[dim], aux=0, bandera=1; //Bandera para evitar comparacion cuando ya esta ordenado
  2.  
  3.     for (int i=1; ((i<dim) && (bandera==1)); i++)
  4.         {
  5.         bandera=-1;
  6.         for (int j=0; j<(dim-i); j++)
  7.             {
  8.             if (vec[j]>vec[j+1])
  9.                {
  10.                aux=vec[j];
  11.                vec[j]=vec[j+1];
  12.                vec[j+1]=aux;
  13.                bandera=1;
  14.                }
  15.             }
  16.         }