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;
}