Shell Estructura de Archivos Introducción Creado por Donald Shell , que lo publicó en la revista Communications of the ACM en 1959.
Es un algoritmo de ordenación interna, se
basa en comparaciones e intercambios. Aunque también puede realizar ordenación externa.
Es una versión mejorada del método de
inserción directa. Modo de Trabajar
En el método se propone que las
comparaciones se efectúen con saltos de mayor tamaño, pero con incrementos que sean saltos de mayor tamaño pero con incrementos decrecientes, así los elementos quedarán ordenados en el arreglo. Pseudocódigo (INT, I y AUX son variables de tipo entero. BAND es una variable de tipo booleano) 1.- Hacer INT N +1. 2.- Mientras (INT > 1) Repetir Hacer INT parte entera (INT /2) y BAND VERDADERO. 2.1.- Mientras (BAND == VERDADERO) Repetir. Hacer BAND FALSO e I 1. 2.1.1.- Mientras ((I + INT) <= N) Repetir. 2.1.1.1.- Si A [I] > A[I + INT] Entonces. Hacer AUX A[I], A[I] A[I + INT], A[I + INT] AUX y BAND VERDADERO. 2.1.1.2.- {Fin del condicional del paso 2.1.1.1} Hacer I I + 1. 2.1.2.- {Fin del ciclo del paso 2.1.1} 2.2.- { Fin del ciclo del paso 2.1} 3.- { Fin del ciclo del paso 2} Representación Gráfica Eficiencia
El análisis de eficiencia es un problema
complicado y aun no resuelto.
Nadie ha sido capaz de establecer la mejor
secuencia de incrementos cuando N es muy grande. Complejidad En 1969 Pratt descubrió que el tiempo de ejecución del es de orden n*(log n)2.
Unas pruebas realizadas para saber la mejor
secuencia de intervalos cuando el número de elementos es igual a 8 dieron como resultado que la mejor secuencia es un intervalo de 1, pero esto equivale al método de inserción directa. Implementación (Código) Gracias por su Atención