domingo, 1 de mayo de 2011

Algoritmo de Ordenamiento (Inserción)

Hola, les voy a hablar un poco del algoritmo de ordenamiento por Inserción, para ello primero debemos saber un poco que es un algoritmo de ordenamiento, es un algoritmo que permite ordenar una lista o un vector, por una serie de parámetros.

El algoritmo por inserción es un algoritmo que  consiste en ordenar  datos de menor a mayor comparando  los datos uno a uno y almacenando los datos en memoria para seguir el recorrido.

Un ejemplo utilizado para describir el funcionamiento de este algoritmo de ordenamiento es el método que normalmente es aplicado por un jugador de cartas, para organizarlas en su mano, agarra la de menor denominación y la coloca en la izquierda, luego observa la de al lado y si es de  de mayor denominación  que la de su derecha la intercambia y así sucesivamente, hasta conseguir ordenar su mano de menor a mayor.

Organizar unas Cartas por Inserción




Para simular esto en un programa necesitamos tener en cuenta algo, no podemos desplazar los elementos sin guardarlo ya que se perderá un elemento. Lo que hacemos es guardar una copia del elemento actual y desplazar todos los elementos mayores hacia la derecha. Luego copiamos el 
elemento guardado en la posición del último elemento que se desplazó.

Ejemplo de Inserción






El código representado en el lenguaje de programación C, manejando  con arreglos , es de esta forma:

void Insercion(int arreglo[n])
{
   int i, x, auxiliar;
   for (i=1; i < n; i++)
     {
          auxiliar = arreglo[i];
          for (x=i-1; x >= 0 && arreglo[x] > aux; x--)
              {
                 arreglo[x + 1] = arreglo[x];
              }
          arreglo[x+1] = auxiliar;
     }
}

El código representado en el lenguaje de programación C, manejando  con listas , es de esta forma:

void Insercion( _lista lista)
{
   int j,I;
 _lista auxiliar;
 for (i=1; i<n; i++)
     {
         auxiliar = lista[i];
          j = i - 1;
          while ( (lista[j] > auxiliar) && (j >= 0) )
              {
               lista[j+1] = lista[j];
               j--;
              }
          lista[j+1] = auxiliar;
     }
}


Aquí encontraran un ejemplo del recorrido del algoritmo de ordenamiento (Una corrida en Frió);

Corrida en Frió Inserción (primera llamada)
Corrida en Frió Inserción (Segunda llamada)


Espero que les sea de utilidad dicha información, cualquier duda me encuentro a la orden, saludos!...




No hay comentarios:

Publicar un comentario