Professional Documents
Culture Documents
CURSO
ESTRUCTURA DE DATOS
TEMA
METODO SHELL
DOCENTE
Gonzlez Glvez Manuel Amadeo
Exponentes
Introduccin
Qu es ordenamiento?
Es la operacin de arreglar los registros de una tabla
en algn orden secuencial de acuerdo a un criterio de
ordenamiento.
El ordenamiento se efecta con base en el valor de
algn campo en un registro.
El propsito principal de un ordenamiento es el de
facilitar las bsquedas de los miembros del conjunto
ordenado.
Ejemplos de Ordenamiento
Tipos de Ordenamiento
Los mas usuales son:
POR INTERCAMBIO (Compara e intercambia
elementos.- Burbuja)
POR SELECCIN (Selecciona el mas pequeo y lo
intercambia)
POR INSERSION (Inserta los elementos en una
sublista ordenada)
METODO SHELL (Es una insercin mejorada)
ORDENACION RAPIDA (Quick Sort.- divide una lista
en dos partes)
Pasos a Seguir
1. Dividir la lista original en n/2 grupos de dos, considerando
un incremento o salto entre los elementos de n/2.
2. Clarificar cada grupo por separado, comparando las
parejas de los elementos, y si no estn ordenados, se
intercambian.
3. Se divide ahora la lista en la mitad de grupos (n/4), con un
incremento o salto entre los elementos tambin mitad
(n/4), y nuevamente se clasifica cada grupo por separado.
4. As sucesivamente se sigue dividiendo la lista en la mitad
de grupos que el recorrido anterior con un incremento o
salto decreciente en la mitad que el salto anterior, y luego
clasificando cada grupo por separado.
5. El algoritmo termina cuando se consigue que el tamao
del salto es 1.
Metodo Shell
Por ejemplo, lo pasos para ordenar el array
{40,21,4,9,10,35} mediante el mtodo de Shell seran:
Salto=3:
Primera pasada:
{9,21,4,40,10,35} <-- se intercambian el 40 y el 9.
{9,10,4,40,21,35} <-- se intercambian el 21 y el 10.
Salto=1:
Primera pasada:
{9,4,10,40,21,35} <-- se intercambian el 10 y el 4.
{9,4,10,21,40,35} <-- se intercambian el 40 y el 21.
{9,4,10,21,35,40} <-- se intercambian el 35 y el 40.
Segunda pasada:
{4,9,10,21,35,40} <-- se intercambian el 4 y el 9.
Con slo 6 intercambios se ha ordenado el array, cuando
por insercin se necesitaban muchos ms.
Presentacin Grfica
Algoritmo
for (int gap=4/2;gap>0; gap=gap==2?1:(int)(gap/2.2))
int tmp=vec[i];
int j;
vec[j]=vec[j-gap];
vec[j]=tmp;
Conclusin
El Shell sort es una generalizacin del ordenamiento por insercin,
teniendo en cuenta dos observaciones:
1. El ordenamiento por insercin es eficiente si la entrada est "casi
ordenada".
2. El ordenamiento por insercin es ineficiente, en general, porque
mueve los valores slo una posicin cada vez.
El algoritmo Shell sort mejora el ordenamiento por insercin
comparando elementos separados por un espacio de varias posiciones.
Esto permite que un elemento haga "pasos ms grandes" hacia su
posicin esperada. Los pasos mltiples sobre los datos se hacen con
tamaos de espacio cada vez ms pequeos. El ltimo paso del Shell
sort es un simple ordenamiento por insercin, pero para entonces, ya
est garantizado que los datos del vector estn casi ordenados.