Ordenamiento por inserción
De Wikipedia, la enciclopedia libre
El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento mayor. En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.
[editar] Implementación en WinPseudo 1.3
INICIO Programa16 - Selection Sort. Herbert Schildt, "Advanced C", Pag. 9. VAR VECTOR Vect[25] NUMERICO a NUMERICO b NUMERICO c NUMERICO Aux NUMERICO Cant FIN-VAR Cant = 25 a = 0 MIENTRAS (a < Cant) Vect[a] = Cant - a a = a + 1 FIN-MIENTRAS a = 0 MIENTRAS (a < Cant - 1) c = a Aux = Vect[a] b = a + 1 MIENTRAS (b < Cant) SI (Vect[b] < Aux) c = b Aux = Vect[b] FIN-SI b = b + 1 FIN-MIENTRAS Vect[c] = Vect[a] Vect[a] = Aux a = a + 1 FIN-MIENTRAS
En el siguiente ejemplo, 32 debe ser insertado entre 26 y 47, y por lo tanto 47, 59 y 96 deben ser desplazados.
k+1 11 26 47 59 96 32 11 26 47 59 96 11 26 32 47 59 96
En la implementación computacional, el elemento k+1 va comparándose de atrás para adelante, deteniéndose con el primer elemento menor. Simultáneamente se van haciendo los desplazamientos.
11 26 47 59 96 32 11 26 47 59 96 11 26 47 59 96 11 26 47 59 96 11 26 32 47 59 96
Aunque este algoritmo tiene un mejor orden de complejidad que el de burbuja, es muy ineficiente al compararlo con otros algoritmos como quicksort. Sin embargo, para listas relativamente pequeñas el orden por inserción es una buena elección, no sólo porque puede ser más rápido para cantidades pequeñas de elementos sino particularmente debido a su facilidad de programación.
[editar] Véase también
A continuación viene una implementación en lenguaje C del algoritmo de Ordenamiento por inserción
void insertionSort(int numbers[], int array_size) { int i, j, index; for (i=1; i < array_size; i++){ index = numbers[i]; j = i; while ((j > 0) && (numbers[j-1] > index)) { numbers[j] = numbers[j-1]; j = j - 1; } numbers[j] = index; } }
[editar] Enlaces externos
- Ordenación por inserción - Implementación en C
- Animación de Algoritmo de Ordenamiento Insertion Sort - Implementación en Java'QUE HASTA EL CULO HAY INFORMACION EN LA INTERNET'