Este método consiste en insertar un elemento en el vector es una parte ya ordenada de este vector y comizas de nuevo con los elementos restantes. por ser utilizado generalmente por los jugadores de cartas se le conoce también por el nombre de método de baraja.
A si por ejemplo, suponga que tiene la lista desordenada.


N*(N+1)/2-1, lo que nos deja un tiempo de ejecución en O(n2). En el mejor caso
(cuando la lista ya estaba ordenada), el número de comparaciones es N-2. Todas
ellas son falsas, con lo que no se produce ningún intercambio. El tiempo de ejecución
está en O(n).
El caso medio dependerá de cómo están inicialmente distribuidos los elementos.
Vemos que cuanto más ordenada esté inicialmente más se acerca a O(n) y cuanto
más desordenada, más se acerca a O(n2).
El peor caso es igual que en los métodos de burbuja y selección, pero el mejor caso
es lineal, algo que no ocurría en éstos, con lo que para ciertas entradas podemos
tener ahorros en tiempo de ejecución.
{
int i, j, index;
for (i=1; i < index =" numbers[i];" j =" i;" style="font-weight: bold;">while ((j > 0) && (numbers[j-1] > index)){
numbers[j] = numbers[j-1];
j = j - 1;
}//fin del while
numbers[j] = index;
}//fin del for
}//fin del ejemplo
Aqui un link de un ejemplo en lenguaje .c
http://rapidshare.com/files/449013398/barajamio.c
Espero que la información aquí mostrada le sirva, y sino se entiende o cometí un error, dejen un comentario para solucionar el problema, estoy abierto a los errores y dudas ;)
NOTA: Los libros tienen la respuesta