11/18/2005

Ordena burbuja mejorado en C++

El método burbuja mejorado, consiste en dos útiles modificaciones.

Después de cada pasada (el bucle for más externo), el elemento de más valor se ubica en el extremo del arreglo. Lo que significa que toma su posición correcta, por este motivo sería conveniente que en vez de realizar todas las compareciones en la segunda pasada, se haga una comparación menos. Para esto usamos una variable comparaciones la cual cada vez que se complete un ciclo for externo (una pasada), se decrementa en 1 mediante la instruccion comparaciones--

//Ordena burbuja mejorado
//www.codigomaldito.blogspot.com
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void mostrarArreglo(const int[], int); //prototipo de funcion que recibe un arreglo constante
void ordenarArreglo(int[], int); //prototipo que modifica y ordena el arreglo
void intercambiar(int&, int&); //prototipo, intercambialos valores de dos elementos
int main()
{
  const int tamano = 15;
  int arreglo[tamano] = {8,10,9,14,1,2,12,15,11,5,6,7,3,4,13};
  cout << "Arreglo antes de ordenarse: "
       <<endl;
  mostrarArreglo(arreglo,tamano);
  cout << "Arreglo despues de ordenarse: " <<endl;
  ordenarArreglo(arreglo,tamano);
  mostrarArreglo(arreglo,tamano);
  cout << "Fin del programa :)" << endl;
  return 0;
}//fin de main
void mostrarArreglo(const int arreglo[], int tamano)
{
  for (int i = 0 ; i < tamano ; i++)
    cout << "arreglo["<< i << "]=" << arreglo[i]<< endl;
}
void ordenarArreglo(int arreglo[], int tamano)
{
  int comparaciones = tamano;
  bool termino = false;
  for (int i = 0; i<(tamano-1) ; i++)
    {
      if (termino)
 break;
      termino = true;
      for (int j = 0; j<comparaciones-1 ; j++)
 if(arreglo[j] < arreglo[j+1])
   {
     intercambiar(arreglo[j],arreglo[j+1]);
     termino = false;
   }
      comparaciones--;
    }
}
void intercambiar(int &a, int &b)
{
  int tmp = b;
  b = a;
  a = tmp;
}

Ver como hacer para compilar este programa.

3 comentarios:

Anónimo dijo...

PORFAVOR PONGAN MAS INFORMACION SOBRE BURBUJA MEJORADO NO SOLO LA INFORMACION.
GRACIAS

Milán dijo...

@Anónimo

Hasta eso quieres, da gracias a que mínimo lo explican, o que? quieres que hagan tu tarea?... lol

Anónimo dijo...

es que no se commprende del todo
y muchos de nosotros somos apenas novatos...