You are on page 1of 17

ESTRUCTURA DE DATOS

CURSO
ESTRUCTURA DE DATOS
TEMA
METODO SHELL

DOCENTE
Gonzlez Glvez Manuel Amadeo

Exponentes

Marco Gamarra Julca


Jonathan Mendoza Guerrero
Carlos Arturo Condor Osores
Wilder Liviapoma Chinchay

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

Cundo conviene usar un


mtodo de ordenamiento?
Cuando
se
requiere
hacer
una
cantidad
considerable de bsquedas y es importante el
factor tiempo.
El ordenar un grupo de datos significa mover los
datos o sus referencias para que queden en una
secuencia tal que represente un orden, el cual
puede
ser
numrico,
alfabtico
o
incluso
alfanumrico, ascendente o descendente.

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)

Ordenacin Shell o Shell Sort


La ordenacin Shell debe su nombre a su inventor, Donald
L. Shell. Se suele denominar tambin ordenacin por
insercin con incrementos decrecientes.
Se considera que el mtodo Shell es una mejora de los
mtodos de insercin directa.
En el algoritmo 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. Generalmente se toma como salto inicial n/2
(siendo n el nmero de elementos), luego se reduce el salto
a la mitad en cada repeticin hasta que el salto es de
tamao 1.

Ordenacin Shell o Shell Sort


El algoritmo realiza mltiples pases a travs de la
lista, y en cada pasada ordena un numero igual de
items. El tamao del set de datos (tambin llamado
distancia o intervalo) a ser ordenado va creciendo a
medida que el algoritmo recorre el array hasta que
finalmente el set esta compuesto por todo el array
en si mismo. El tamao del set de datos usado tiene
un impacto significativo en la eficiencia del
algoritmo. Algunas implementaciones de este
algoritmo tienen una funcin que permite calcular
el tamao ptimo del set de datos para un array
determinado.

Ordenacin Shell o Shell


Sort
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.

Ordenacin Shell o Shell Sort


El mtodo Shell primero mueve los valores usando
tamaos de espacio gigantes, de manera que un valor
pequeo se mover bastantes posiciones hacia su
posicin final, con slo unas pocas comparaciones e
intercambios.
Uno puede visualizar el algoritmo Shell sort de la
siguiente manera: coloque la lista en una tabla y ordene
las columnas (usando unordenamiento por insercin).
Repita este proceso, cada vez con un nmero menor de
columnas ms largas. Al final, la tabla tiene slo una
columna. Mientras que transformar la lista en una tabla
hace ms fcil visualizarlo, el algoritmo propiamente
hace su ordenamiento en contexto (incrementando el
ndice por el tamao de paso, esto es usandoi +=
tamao_de_pasoen vez dei++).

Ordenacin Shell o Shell Sort


Lasecuencia de espacioses una parte integral del
algoritmo Shell sort. Cualquier secuencia incremental
funcionara siempre que el ltimo elemento sea 1. El
algoritmo comienza realizando unordenamiento por
insercin con espacio, siendo el espacio el primer
nmero en la secuencia de espacios. Continua para
realizar un ordenamiento por insercin con espacio
para cada nmero en la secuencia, hasta que termina
con un espacio de 1. Cuando el espacio es 1, el
ordenamiento
por
insercin
con
espacio
es
simplemente unordenamiento por insercinordinario,
garantizando que la lista final estar ordenada.

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))

for(int i=gap; i<=4;i++)

int tmp=vec[i];

int j;

for(j=i;j>=gap && tmp< vec[j-gap];j-=gap)

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.

GRACIAS POR SU ATENCION

Lima Per 2016

You might also like