jueves, 1 de diciembre de 2011

Método por Inserción 

3. Método de  Inserción 
  • Técnica del método: El método de ordenación por inserción es similar al proceso típico de ordenar tarjetas de nombres (cartas de una baraja) por orden alfabético, que consiste en insertar un nombre en su posición correcta dentro de una lista o archivo que ya está ordenado.


La ordenación por inserción contempla los siguientes pasos:
1. El primer elemento A[0] se considera ordenado; es decir, la lista inicial consta de un
elemento.
2. Se inserta A[1] en la posición correcta, delante o detrás de A[0], dependiendo de que sea
menor o mayor.
3. Por cada bucle o iteración i (desde i=1 hasta n-1) se explora la sublista A[i-1] . .
A[0] buscando la posición correcta de inserción; a la vez se mueve hacia abajo (a la derecha
en la sublista) una posición todos los elementos mayores que el elemento a insertar
A[i], para dejar vacía esa posición.
4. Insertar el elemento a la posición correcta.

Ejemplo:

La función Inserción() tiene dos argumentos, el array a[] que se va a ordenar crecientemente,
y el número de elementos n. En la codificación se supone que los elementos son de tipo
entero.


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

Definición de Funciones:
void  Insercion (int [] a, int n)
{
int i, j;
int aux;
for (i = 1; i < n; i++)
       {
        j = i;
aux = a[i];
while (j > 0 && aux < a[j-1])
          {
           a[j] = a[j-1];
          j--;
           }
          a[j] = aux;
       }
}
void imprimirLista (int a[], int n)
{
int i;
for (i = 0 ; i < n ; i++)
{
printf("%d", a[i]);
}
}
void entradaLista (int a[], int n)
{
int i;
printf("\n Entrada de los elementos\n");
for (i = 0 ; i < n ; i++)
{
printf("a[%d] = ",i);
scanf("%d", a+i);
}
}
Prueba de Escritorio:






No hay comentarios:

Publicar un comentario