Metodo de Insercion

 Metodo de Incercion
Este algoritmo también es bastante sencillo. ¿Has jugado cartas?. ¿Cómo las vas ordenando cuando las recibes? Yo lo hago de esta manera: tomo la primera y la coloco en mi mano. Luego tomo la segunda y la comparo con la que tengo: si es mayor, la pongo a la derecha, y si es menor a la izquierda (también me fijo en el color, pero omitiré esa parte para concentrarme en la idea principal). Después tomo la tercera y la comparo con las que tengo en la mano, desplazándola hasta que quede en su posición final. Continúo haciendo esto, insertando cada carta en la posición que le corresponde, hasta que las tengo todas en orden. ¿Lo haces así tu también? Bueno, pues si es así entonces comprenderás fácilmente este algoritmo, porque es el mismo concepto.
Para simular esto en un programa necesitamos tener en cuenta algo: no podemos desplazar los elementos así como así o se perderá un elemento. Lo que hacemos es guardar una copia del elemento actual (que sería como la carta que tomamos) y desplazar todos los elementos mayores hacia la derecha. Luego copiamos el elemento guardado en la posición del último elemento que se desplazó. 
  • CODIGO :
for (i=1; i<TAM; i++)
{ 
   temp = lista[i];
   j = i - 1;
   while ( (lista[j] > temp) && (j >= 0) )
   { 
     lista[j+1] = lista[j];
     j--;
   } 
   lista[j+1] = temp; 
} 

Ventajas:
  • Fácil implementación.
  • Requerimientos mínimos de memoria.
Desventajas:
  • Lento.
  • Realiza numerosas comparaciones.
Este también es un algoritmo lento, pero puede ser de utilidad para listas que están ordenadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos. 
http://c.conclase.net/orden/?cap=insercion#inicio 

Seguidores