Está en la página 1de 12

Integrantes:

Sergio Salinas
Pablo Corrales
Elas Grate
Claudio Saji
Profesora: Rosa Barrera Capot

Mtodo Shell Sort: Historia


El mtodo se denomina Shell en
honor de su inventor Donald Shell
(nacido el 01 de marzo 1924)
Adquiri su Ph.D. en Matemticas
de la Universidad de Cincinnati en
1959, y public el algoritmo Shell en
las Comunicaciones de la ACM en
julio del mismo ao.

Creador: Donald Shell

Ao de publicacin: 1959

Revista: Communications of the ACM.

Se considera que el mtodo Shell


es una mejor de los mtodos de
insercin directa. En el lgoritmo
de insercin, cada elemento se
compara con los elementos
contiguos de su izquierda, uno
tras otro. Si el elemento a insertar
es el ms pequeo hay que
realizar muchas comparaciones
antes de colocarlo en su lugar
definitivo. El algoritmo de Shell
modifica los saltos contiguos
resultantes de las comparaciones
por saltos de mayor tamao y con
ello se consigue que la ordenacin
sea ms rpida.

Sea el siguiente arreglo

El mismo arreglo desordenado sera:

Luego, hay que considerar un n que sera


el numero de elementos del arreglo. En
este caso n=10. Luego se aplica n/2 y ese
ser el numero de saltos como lo indica la
siguiente imagen:

Luego, cuando el elemento de la izquierda sea mayor que el


de la derecha, se intercambian de posicin, en caso
contrario, se deja tal cual como est

Luego se vuelve a hacer el mismo procedimiento , ya que hubieron


numeros cambiados, recordar que se pasa a n/2 denuevo cuando en
ningun salto se requiere cambiar de posicion algun elemnto

Luego, como al analizar los saltos no hay ningun elemento que sea mayor que el
otro de izquierda a derecha, el salto 5 se le aplica n/2, lo cual dividido como
entero seria 5:2=2 , entonces ahora el valor del salto ser 2

Luego intercambiando cuando se cumple la condicion mencionada antes


quedara asi:

Luego, como s hubieron cambios, entonces se aplica el mismo


procedimiento anterior. Luego quedara as:

Hubo un cambio solamente, por lo cual hay que


volver a repetir el proceso.

Finalmente, el arreglo ha quedado ordenado


crecientemente.

Caractersticas tcnicas del algoritmo.


Como podemos observar en el
grfico, Shell sort aumenta mucho
el tiempo que requiere para ordenar
los elementos a medida que el
nmero de estos crece. Por lo que
se recomienda para un nmero
pequeo o mediano de elementos
(Menor a 5000 elementos) debido a
la simpleza del algoritmo.

Para arreglos semi ordenados es


considerablemente ms rpido que otros
algoritmos de O(n2) como bubble sort e
insert sort. Es 5 veces ms rpido que
bubble sort y aproximadamente 2 veces
ms rpido que insert sort.

Shell Sort comparado con otros


algoritmos de ordenamiento
El algoritmo Shellsort estara en
tercer lugar de acuerdo a este
grafico. Shellsort y Mergesort se
demoran prcticamente lo
mismo en ordenar elementos, la
diferencia es que Shellsort no
ocupa espacio extra en realizar el
ordenamiento, esto lo hace ms
eficiente., pero hasta los 100.000
elementos shellsort solo usa el
doble de tiempo que quicksort
para ordenar el arreglo.

Concluyendo lo anterior
Para menos de 100.000 elementos
Shellsort es mejor que Heapsort.
Mergesort se comporta un poco
mejor que Shellsort en tiempo de
ejecucion, pero no trabaja in place,
quicksort se comporta mejor que
Shellsort y tambin opera in place,
pero su desventaja es tener un peor
caso O(n^2).
Shellsort no es el algoritmo mas
eficiente para ordenar arreglos, pero
es mucho mas fcil de programar.

Shell Sort en C++

Shell Sort puede que no sea el


mtodo de ordenamiento ms
eficiente para ordenar arreglos, pero
es bastante sencillo de programar y
de entender. Adems, no requiere
memoria adicional y es un mejora
del ordenamiento por insercin.

También podría gustarte