algoritmo de ordenamiento shell
TRANSCRIPT
-
7/24/2019 Algoritmo de Ordenamiento Shell
1/2
Escuela Tecnolgica InstitutoTcnico Central La Salle
Lgica de Programacin
Presentado por:
German Gmez Rocha
Jheison Stic !e"arano Palacios
#ircoles $$ de no%iem&re del '($)
*lgoritmo de
+rdenamiento Shell
El presente trabajo tiene como objetivo
conocer el concepto bsico del algoritmo de
ordenamiento bajo el mtodo de SHELL.
En esta presentacin veremos cuando se
aplica este mtodo, como es su
funcionamiento.
El ordenamiento Shell (Shell sort en ingls es
unalgoritmo de ordenamiento.El mtodo se
denomina Shellen honor de su
inventor !onald Shell. Su implementacin
original, re"uiere #(n$ comparaciones e
intercambios en el peor caso. %n cambio
menor presentado en el libro de &. 'ratt
produce una implementacin con unrendimiento de #(nlog$n en el peor caso.
Esto es mejor "ue las #(n$ comparaciones
re"ueridas por algoritmos simples pero peor
"ue el ptimo #(nlog n. un"ue es fcil
desarrollar un sentido intuitivo de cmo
funciona este algoritmo, es mu) dif*cil anali+ar
su tiempo de ejecucin.
El Shell sort es una generali+acindel ordenamiento por insercin, teniendo en
cuenta dos observaciones
-. El ordenamiento por insercin es
eficiente si la entrada est casi
ordenada.
$. El ordenamiento por insercin es
ineficiente, en general, por"ue mueve
los valores slo una posicin cada
ve+.
El algoritmo Shell sort mejora el ordenamiento
por insercin comparando elementos
separados por un espacio de varias
posiciones. Esto permite "ue un elemento
haga pasos ms grandes hacia su posicin
esperada. Los pasos m/ltiples sobre los datos
se hacen con tama0os de espacio cada ve+
ms pe"ue0os. El /ltimo paso del Shell sort
es un simple ordenamiento por insercin, pero
para entonces, )a est garanti+ado "ue los
datos del vector estn casi ordenados.
Ejemplo
1onsidere un valor pe"ue0o "ue est
inicialmente almacenado en el final
delvector"ue se "uiere ordenar de forma
ascendente. %sando un ordenamiento #(n$
como el ordenamiento de burbujao
el ordenamiento por insercin, tomar
apro2imadamente ncomparaciones e
intercambios para mover este valor hacia el
otro e2tremo del vector. El Shell sort primero
mueve los valores usando tama0os de
espacio gigantes, de manera "ue un valor
pe"ue0o se mover bastantes posiciones
hacia su posicin final, con slo unas pocas
comparaciones e intercambios.
https://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/w/index.php?title=Donald_Shell&action=edit&redlink=1https://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Ordenamiento_de_burbujahttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/w/index.php?title=Donald_Shell&action=edit&redlink=1https://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Ordenamiento_de_burbujahttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento -
7/24/2019 Algoritmo de Ordenamiento Shell
2/2
%no puede visuali+ar el algoritmo Shell sort
de la siguiente manera colo"ue la lista en
una tabla ) ordene las columnas (usando
unordenamiento por insercin
. 3epita este
proceso, cada ve+ con un n/mero menor de
columnas ms largas. l final, la tabla tiene
slo una columna. 4ientras "ue transformar
la lista en una tabla hace ms fcil
visuali+arlo, el algoritmo propiamente hace su
ordenamiento en conte2to (incrementando el
*ndice por el tama0o de paso, esto es
usando i += tamao_de_paso en ve+
de i++ .
'or ejemplo, considere una lista de n/meros
como [ 13 14 94 33 82 25 59 94 65
23 45 27 73 25 39 10 ] . Si
comen+amos con un tama0o de paso de 5,
podr*amos visuali+ar esto dividiendo la lista
de n/meros en una tabla con 5 columnas.
Esto "uedar*a as*
13 14 94 33 82
25 59 94 65 23
45 27 73 25 39
10
Entonces ordenamos cada columna, lo "ue
nos da
10 14 73 25 23
13 27 94 33 39
25 59 94 65 82
45
1uando lo leemos de nuevo como una /nica
lista de n/meros, obtenemos
[ 10 14 73 25 23 13 27 94 33 39
25 59 94 65 82 45 ] . "u*, el -6 "ue
estaba en el e2tremo final, se ha movido
hasta el e2tremo inicial. Esta lista es entonces
de nuevo ordenada usando un ordenamientocon un espacio de 7 posiciones, ) despus un
ordenamiento con un espacio de - posicin
(ordenamiento por insercin simple.
&E89:S
Es un mtodo de ordenamiento
relativamente simple ) tiene un
mtodo de ejecucin aceptable.
Es uno de los algoritmos ms rpidos
"ue se pueden encontrar.
Este tipo de ordenamiento no re"uiere de
memoria adicional para su ejecucin.
!ES&E89:S
Su complejidad es dif*cil de calcular )
depende mucho de la secuencia de
incrementos "ue utilice.
Es un algoritmo algo inestable, por"uese puede perder el orden relativo
inicial con facilidad.
1#81L%S;#8ES
El tiempo "ue re"uiere este algoritmo,
depende de "u sucesin de
incrementos se use.
Es importante recordar "ue es uno de
los algoritmos mas rpidos, pero pococonfiables por su facilidad de perdida
en su orden de b/s"ueda, ser*a
importante reali+ar pruebas
e2perimentales ) de esta forma
determinar su fiabilidad.
El Shell sort lleva este nombre en honor a su
inventor, !onald Shell, "ue lo public en
-