Está en la página 1de 9

METODOS DE ORDENACION

(SHELLSORT Y QUICKSORT)

PAOLA ANDREA ALBARRACIN CUEVAS


OSCAR MAURICIO BARRERA SISSA

UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA


SECCIONAL DUITAMA
ADMINISTRACION INDUSTRIAL
2015

METODOS DE ORDENACION
(SHELLSORT Y QUICKSORT)

PAOLA ANDREA ALBARRACIN CUEVAS


OSCAR MAURICIO BARRERA SISSA

PRESENTADO A:
MARGARITA AVELLANEDA

UNIVERSIDAD PEDAGOGICA Y TECNOLOGICA DE COLOMBIA


SECCIONAL DUITAMA
ADMINISTRACION INDUSTRIAL
2015

METODO SHELLSORT

* Mtodo Shell
El nombre se debe a su inventor, D. 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. 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.
Ejemplo: 74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30
Se debe empezar con k=n/2, siendo n el nmero de elementos de arreglo, y utilizando
siempre la divisin entera.... despus iremos variando k hacindolo ms pequeo
mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero vamos a ello... En nuestro
ejemplo, n=11 (porque hay 11 elementos).
As que k=n/2=11/2=5 Empezamos con k=5. As pues, vamos a dividir nuestro arreglo
original en 5 sub-arreglo, en los cuales, sus elementos estarn separados por 5 lugares
del arreglo original (el salto o gap es 5).
1.- Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos tambin otro
elemento (el 97) volvemos a contar 5 y tomamos otro (el 30) y acabamos porque se nos
acaba el arreglo. El primer sub-arreglo con k=5 es el formado por
74, 97 y 30.
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30
Ahora, ordenaremos los elementos del sub-arreglo pero slo entre ellos, utilizando el
algoritmo de Insercin directa. 74, 97, 30 30, 14, 21, 44, 38, 74 , 11, 78, 65, 88, 97
El 30, un elemento relativamente pequeo se ha ido hacia el principio y el 97 hacia el
final. Formemos ahora otro sub-arreglo con salto k=5... Partiendo del segundo elemento
(el 14) y contando 5 (tomamos tambin el 11) y hasta ah, porque se acaba el arreglo.

30, 14, 21, 44, 38, 74, 11, 78, 65, 88, 97
Vamos a ordenarlos el 11 primero y el 14 despus. 30, 11, 21, 44, 38, 74, 14, 78, 65,
88, 97 * 17. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Ahora a por otro el 21 y el 78
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Estn en orden entre ellos, as que se
quedan como estn.
Ahora le toca al sub-arreglo formado por el 44 y el 65 30 , 11 , 21, 44, 38, 74 , 14 , 78,
65, 88, 97 Que tambin estn en orden entre ellos. y finalmente el 38 y el 88, que
tambin estn en orden. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 * 18. An no hemos
terminado de ordenarlos. Nuestra k vala 5, as que ahora kk/2=5/2=2, nuestra nueva
k vale 2.
Repetimos todo el desarrollo anterior, pero ahora nos saldrn 2 sub-arreglo cuyos
elementos estn separados por 2 lugares. Tomamos el primer elemento (el 30)
contamos 2 lugares y tomamos tambin otro elemento (el 21) volvemos a contar 2 y
tomamos otro (el 38), volvemos a contar y ahora tomamos (el 14), seguimos contado y
tomamos (el 65), seguimos contando y tomamos (el 97) y acabamos porque se nos
acaba el arreglo. Y posteriormente se forma el segn sub-arreglo que empieza con el
11. 30, 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Se ordena (primero los rojos), con el
mtodo de insercin: 14, 11 , 21, 44, 30, 74 , 38, 78, 65, 88, 97
Finalmente ordenamos los negros, pero estos ya estn ordenados: 14 , 11 , 21, 44, 30,
74 , 38 , 78, 65, 88, 97 * 19. Finalmente, calculamos un nuevo k dividiendo el que
tenemos entre 2. kk/2=2/2=1 Hemos llegado a k=1. Cuando k es 1 slo podemos
obtener 1 sub-arreglo cuyos elementos estn separados 1 posicin: el propio arreglo
original. Dicho de otra manera... cuando k es 1, el algoritmo de Shell se comporta
exactamente igual que el de insercin directa sobre todo el arreglo. 14 , 11 , 21, 44, 30,
74 , 38 , 78, 65, 88, 97 El mtodo de insercin directa se comporta tanto mejor cuanto
ms cerca est cada elemento de su sitio definitivo. Finalmente, el arreglo queda de
sta manera: 11, 14, 21, 30, 38, 44, 65, 74, 78, 88, 97 Cada elemento descolocado ha
tenido que moverse pocos lugares. Muchos de ellos ni siquiera se han movido.

PROGRAMA

DIAGRAMA DE FLUJO

METODO QUICKSORT

El mejor algoritmo de ordenacin conocido actualmente (el ms eficiente).


Basado en la tcnica divide y vencers.
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
Resituar los dems elementos de la lista a cada lado del pivote, de manera que a un
lado queden todos los menores que l, y al otro los mayores. Los elementos iguales al
pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de
la implementacin deseada. En este momento, el pivote ocupa exactamente el lugar
que le corresponder en la lista ordenada.
La lista queda separada en dos sublistas, una formada por los elementos a la izquierda
del pivote, y otra por los elementos a su derecha.Repetir este proceso de forma
recursiva para cada sublista mientras stas contengan ms de un elemento. Una vez
terminado este proceso todos los elementos estarn ordenados.
Ejemplo sencillo de QuickSort
Supongamos tenemos un arreglo con una serie de nmeros desordenados y queremos
ordenar por el mtodo de Quicksort:
[7,8,14,12,2,1,3,21]
Seleccionamos un pivote, por ejemplo el 12
[7,8,14,12,2,1,3,21]
Pivote = 12
Ahora movemos todos los menores al pivote a la izquierda del pivote y los mayores a la
derecha del pivote
[7,8,14,12,2,1,3,21] Original

[7,8,2,1,3,12,14,21]

Los menores al pivote a la izquierda


Los mayores al pivote a la derecha
[7,8,2,1,3,12,14,21]
El 12 ya est ordenado
[7,8,2,1,3,12,14,21]
Ahora tenemos dos sub-arreglos de nmeros, por un lado los que estn a la izquierda
del pivote y por otro los que estn a la derecha.
[7,8,2,1,3,12,14,21]
Consideramos el sub-arreglo de la izquierda:
[7,8,2,1,3,12,14,21]
Seleccionamos un nuevo pivote para el nuevo sub-arreglo de la izquierda.
[7,8,2,1,3,12,14,21]
Seleccionamos el pivote del sub-arreglo
Pivote= 2
[7,8,2,1,3,12,14,21]
[7,8,2,1,3,12,14,21]
Nuevamente movemos los menores al pivote a su izquierda y los mayores a su
derecha.
[7,8,2,1,3,12,14,21]
[1,2,3,7,8,12,14,21]
[1,3,2,7,8,12,14,21]
El 2 ya est ordenado al igual que el 12
[1,3,2,7,8,12,14,21]

Cuidado: el 1,3,7,8,14,21 an no estn ordenados


Se repite recursivamente hasta tener todos ordenados
[1,2,3,7,8,12,14,21]

También podría gustarte