martes, 5 de julio de 2011

A continuación una breve explicación de algunos métodos de ordenación ya mencionados.

ORDENAMIENTO BURBUJA

La idea básica del ordenamiento de la burbuja es recorrer el conjunto de elementos en forma secuencial varias veces. Cada paso compara un elemento del conjunto con su sucesor (x[i] con x [i+i]), e intercambia los dos elementos si no están en el orden adecuado. El algoritmo utiliza una bandera que cambia cuando se realiza algún intercambio de valores, y permanece intacta cuando no se intercambia ningún valor, pudiendo así detener el ciclo y terminar el proceso de ordenamiento cuando no se realicen intercambios, lo que indica que este ya está ordenado. Este algoritmo es de fácil comprensión y programación pero es poco eficiente puesto que existen n-1 pasos y n-i comprobaciones en cada paso.

void ordenar(int arreglo[], int n)
{
 
int temporal, i = 0, j, cambio = 1;
while (i<n-1 && cambio == 1)
{
  cambio=0;
for (j=0; j<n-1, j++)

{   if (arreglo[j]>arreglo[j+1])
{
  cambio=1;
temporal = arreglo[j];
arreglo[j] = arreglo[j+1];
arreglo[j+1] = temporal;
  }   }
i++;

}
}







ORDENAMIENTO POR INSERCCION
La estrategia del ordenamiento por inserción consiste en crear un nuevo arreglo vacío e irle insertando en la posición correcta cada uno de los elementos del arreglo original, hasta tener el arreglo ordenado. La desventaja de este método radica en su normal implementación mediante vectores ya que cuando se desea insertar un nuevo elemento en el vector, es necesario desplazar todos los elementos que hay desde ese punto hasta el final del arreglo, para así crear un espacio para el nuevo elemento.
algoritmo insertSort( A : lista de elementos ordenables )
    para i=1 hasta longitud(A) hacer
         index=A[i]
         j=i-1
         mientras j>=0 y A[j]>index hacer
              A[j+1] = A[j]
              j = j - 1
         fin mientras
         A[j+1] = index
    fin para
fin algoritmo
 

1 comentario: