INSERCIÓN

Este algoritmo de ordenación es la forma natural que las personas utilizaríamos para ordenar, por ejemplo una bajara de cartas desordenadas.

Su forma de trabajar es la siguiente:
  • coge el primer elemento y lo compara con el elemento de su izquierda, como es el primero no hay elementos a su izquierda, así que está ordenado.
  • coge el segundo elemento y lo compara con el elemento de su izquierda, si es menor intercambia los elementos de posición.
  • ahora coge el tercer elemento  y lo compara con el de su izquierda, si es menor los intercambia, vuelve a comparar este elemento con el de su izquierda y si es menor los vuelve a intercambiar, y así hasta llegar el primer elemento
Esta sucesión se realiza para todos los elementos.


Tras aplicar el algoritmo de la inserción los elementos quedarían  ordenador así:

3 4 6 7 8

Una posible implementación sería:


#include <stdio.h>

int main(void){
int a[]={3,1,4,2,5,93,54,654,-4,-34,94,83,75,66,23,56,76,334,98};
int i, pos, aux;
int tam_a = sizeof(a)/sizeof(int);
for(i = 0; i< tam_a;i++){
pos = i;
aux = a[i];
while((pos > 0) && (aux < a[pos -1])){
a[pos] = a[pos - 1];
pos--;
}
a[pos] = aux;
}
return 0;
}