ordenamiento mediante la Insercin LUIS ROBERTO CARLOS REYES RAYAS DAVID UZZIEL MENA MALDONADO JONATHAN RUBN SORIA GARCA Insercin
El mtodo de ordenacin por insercin directa consiste en recorrer todo el array
comenzando desde el segundo elemento hasta el final. Para cada elemento, se trata de colocarlo en el lugar correcto entre todos los elementos anteriores a l o sea entre los elementos a su izquierda en el array. Los pasos a efectuar en el caso de una ordenacin ascendente (en el caso de la ordenacin descenderte solo habra que cambiar el signo de comparacin) son: 1. Comparar el primer y segundo elemento, intercambiarlos si el primero es mayor que el segundo; luego se compara el primero con el tercero, intercambindose en caso necesario, y el proceso se repite hasta llegar al ltimo elemento. De este modo, tras la primera iteracin la casilla primera conservara el elemento ms pequeo de esa iteracin. 2. Se repite el paso anterior, pero ahora con el segundo espacio, despus con el tercero, en caso de ser necesario se intercambian, y as hasta llegar a comparar el segundo con el ultimo. Cdigo Muestra en C++ void insercion( int * v, int n) /*** cdigo en C++ ***/ { /* ordenamiento de insercion */ for (int i = 1, j = 0; i < n; i++) { int tem = v[i]; j = i - 1; while ( j >= 0 && tem < v[j]) { v[j+1] = v[j]; j--; } v[j+1] = tem; } } Ventajas y Desventajas En el mejor caso (cuando el array ya estaba ordenado), el tiempo de ejecucin de este mtodo de ordenamiento es O(n). Donde O es la cantidad de operaciones y n las lista de elementos. El caso medio depender de cmo estn inicialmente distribuidos los elementos. Cuanto ms ordenada est inicialmente ms se acerca a O(n) y cuanto ms desordenada, ms se acerca a O(n2). En el peor de los casos, el tiempo de ejecucin en O(n2). El peor caso el mtodo de insercin directa es igual que en los mtodos de burbuja y seleccin, pero el mejor caso podemos tener ahorros en tiempo de ejecucin.