Anda di halaman 1dari 14

l

Contenido Pg.
INTRODUCCIN ........................................................................................................................ 1
OBJETIVOS ................................................................................................................................. 2
Tiempo que le toma a cada programa en ejecutar una cierta cantidad de elementos .................... 3
COMO FUNCIONA EL MTODO SHELLSORT ...................................................................... 4
CONCEPTOS BSICOS .............................................................................................................. 5
Qu significa ordenar? ................................................................................................................. 5
Cul es el propsito de un ordenamiento? ................................................................................... 5
Cuntos tipos de ordenamientos existen? .................................................................................... 5
Cundo conviene usar un mtodo de ordenamiento? .................................................................. 5
Qu es ordenar un grupo de datos? .............................................................................................. 5
MTODO DE ORDENAMIENTO SHELLSORT ....................................................................... 6
EJERCICIO DEL METODO DE ORDENAMIENTO <<SHELLSORT>> ................................ 6
EXPLICACIN DEL ALGORITMO DEL MTODO DE ORDENAMIENTO
<<SHELLSORT>> ....................................................................................................................... 8
PSEUDOCDIGO DEL METODO DE ORDENAMIENTO << SHELLSORT>> ................... 9
Tiempo de ejecucin: .................................................................................................................... 9
Ventajas: ........................................................................................................................................ 9
Desventajas: .................................................................................................................................. 9
CDIGO EN C++ ....................................................................................................................... 10
CONCLUSIONES ...................................................................................................................... 11
RECOMENDACIONES ............................................................................................................. 11
BIBLIOGRAFA ......................................................................................................................... 12

1
INTRODUCCIN

El estudio de algoritmos de ordenamiento tiene una gran importancia dentro de la
ciencia de la Computacin, pues una buena cantidad de los procesos realizados por
medios computacionales requieren que sus datos estn ordenados. Adems, el hecho de
almacenar los datos de manera ordenada permite implementar algoritmos de bsqueda
muy rpidos (por ejemplo: bsqueda binaria). Esta y muchas otras razones de fin
prctico impulsaron el estudio y la bsqueda de algoritmos de ordenamiento eficientes.

Desde los comienzos del uso de computadores se conocan algoritmos que resolvan el
problema en tiempo cuadrtico respecto del tamao del problema, pero eran rutinas muy
sencillas y lentas.

El algoritmo de ordenamiento ShellSort debe su nombre al ingeniero y matemtico
estadounidense Donald Shell.














2
OBJETIVOS

Mostrar cmo funciona el mtodo de ordenamiento ShellSort mediante datos y
ejemplos.

Dar a conocer algunos conceptos bsicos, necesarios para realizar un
ordenamiento.

Explicar el uso del algoritmo del mtodo de ordenamiento ShellSort.

Implementar el algoritmo de ordenamiento ShellSort, tanto en pseudocdigo
como en C ++

Dar a conocer la funcin que cumplen los intervalos decrecientes de este
algoritmo.

Dar a conocer el tiempo que toma cada programa en ordenar una serie de
elementos, mediante una explicacin y un grfico para una mejor comprensin.












3
TIEMPO QUE LE TOMA A CADA PROGRAMA EN EJECUTAR UNA
CIERTA CANTIDAD DE ELEMENTOS

Existen una infinidad de mtodos de ordenamiento, algunos son simples e intuitivos,
como el bubble sort, y otros como son extremadamente complicados, pero producen los
resultados mucho ms rpido.
Entre los algoritmos de ordenamiento ms comunes estn los siguientes: Bubble sort,
Heap sort, Insertion sort, Merge sort, Quick sort, Selection sort y Shell sort.

En el grfico siguiente se puede ver el tiempo de ejecucin del algoritmo en funcin de
la cantidad de elementos, se puede observar que si los elementos a ordenar son pocos,
menos de 1000 casi todos los tienen el mismo tiempo de respuesta, pero si la cantidad
de datos aumenta los tiempos de respuesta van cambiando drsticamente entre cada uno
de los ellos, y para una cantidad de datos de 8000 ya se puede determinar que el peor
algoritmo es el bubble sort, mientras que el mejor es el Heap sort.

[s]







[Elementos]


4
COMO FUNCIONA EL MTODO SHELLSORT

Es una mejora del mtodo de insercin directa, utilizado cuando el array tiene un gran
nmero de elementos. En este mtodo no se compara a cada elemento con el de su
izquierda, como en el de insercin, sino con el que est a un cierto nmero de lugares
(llamado salto) a su izquierda. Este salto es constante, y su valor inicial es n/2 siendo n
el nmero de elementos, y siendo divisin entera). Se van dando pasadas hasta que en
una pasada no se intercambie ningn elemento de sitio. Entonces el salto se reduce a la
mitad, y se vuelven a dar pasadas hasta que no se intercambie ningn elemento, y as
sucesivamente hasta que el salto vale 1.
Primeramente vamos a ordenar de menor a mayor.
En este mtodo existe un nmero llamado PIVOTE que se tomara como referencia para
realizar las respectivas comparaciones.
Y de esta manera ordenar los nmeros de forma secuencial y ordenada.














5
CONCEPTOS BSICOS

QU SI GNI FI CA ORDENAR?
Significa permutar elementos de tal forma que los mismos queden de acuerdo con una
distribucin preestablecida (ascendente o descendente).
CUL ES EL PROPSI TO DE UN ORDENAMI ENTO?
El propsito principal de un ordenamiento es el de facilitar las bsquedas de los
miembros del conjunto ordenado.
CUNTOS TI POS DE ORDENAMI ENTOS EXI STEN?
Existen 2 tipos: los internos y los externos.
Los internos son aquellos en los que los valores a ordenar estn en memoria principal.
Los externos son aquellos en los que los valores a ordenar estn en memoria secundaria
(disco, cinta, cilindro magntico, etc.)
CUNDO CONVI ENE USAR UN MTODO DE ORDENAMI ENTO?
Cuando se requiere hacer una cantidad considerable de bsquedas y es importante el
factor tiempo.
QU ES 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.




6
MTODO DE ORDENAMIENTO SHELLSORT
El mtodo de ordenamiento ShellSort consiste en dividir la serie en partes para poder
realizar las comparaciones.
Para calcular los saltos se divide el nmero total de elementos de la serie para 2,
n=5/2
n=2,5 como tenemos que tomar el nmero entero
entonces sera el 2, que sera la cantidad de saltos de nuestra serie.

EJ ERCI CI O DEL MTODO DE ORDENAMI ENTO <<SHELLSORT>>
Ordenar la siguiente serie de menor a mayor

PIVOTE

4 2 3 1 5
comparaciones
4>3 si; entonces hay cambio, el 3 toma la posicin del 4 y el nmero 4 toma la posicin
del 3
3 2 4 1 5
4>5 no; entonces se mantiene la serie, no hay cambios.
3 2 4 1 5
2>1 si; entonces se realiza un cambio
3 1 4 2 5
Como ya no hay ms nmeros para ordenar de dos en dos, tomamos el resultado
anterior y lo dividimos para 2.

n=2/2
n=1, que sera mi nuevo nmero de saltos




7
3 1 4 2 5
comparamos
3>1 si; entonces se realiza un cambio
1 3 4 2 5
3>4 no; entonces no hay cambio
4>2 si ; entonces se realiza un cambio
1 3 2 4 5
1>3 no; entonces no hay cambio
3>2 si; entonces se realiza un cambio

1 2 3 4 5

Bien ya estara ordenada nuestra serie de manera ascendente.
1 2 3 4 5














8
EXPLICACIN DEL ALGORITMO DEL MTODO DE ORDENAMIENTO
<<SHELLSORT>>
Ordenamiento por intervalos decrecientes, nombrado as debido a su inventor Donald
Shell, este algoritmo ordena subgrupos de elementos separados k unidades respecto de
su posicin en el arreglo. El valor de k es llamado intervalo. Despus de que los
primeros k subgrupos fueron ordenados generalmente utilizando insercin directa, se
escoge un nuevo valor de k ms pequeo, y el arreglo es de nuevo partido entre el nuevo
conjunto de subgrupos. Cada uno de los subgrupos mayores es ordenado y el proceso se
repite de nuevo con un valor ms pequeo de k.
Cuando el incremento toma un valor de 1, todos los elementos pasan a formar parte del
subgrupo y se aplica insercin directa. El mtodo se basa en tomar como salto al
principio N/2, siendo N el nmero de elementos, y luego se va reduciendo a la mitad en
cada repeticin hasta lograr un valor de 1.















9
PSEUDOCDIGO DEL METODO DE ORDENAMIENTO << SHELLSORT>>
ALGORITMO SHELL
INICIO
ENTERO INTERVALO, K, J, I, AUX
INTERVALO N DIV 2
MIENTRAS (INTERVALO > 0)
{
PARA{I INTERVALO 1, HASTA N, I I + 1)
{
J I INTERVALO
MIENTRAS(J >= 0)
{
K J + INTERVALO
SI (VECTOR[K] <= VECTOR[J])
{
AUX VECTOR[J]
VECTOR[J] VECTOR[K]
VECTOR[K] AUX
}
SI NO
{
J 0
}
J J INTERVALO
}
}
INTERVALO INTERVALO DIV 2
}
}
TI EMPO DE EJ ECUCI N:
El bucle externo se ejecutar, el redondeo de (

) veces, el interno n veces, luego el


bucle ms interno depende de j j O(n) la constante j se absorbe, luego tenemos
O(

) () (

)
VENTAJ AS:
No requiere memoria adicional.
Mejor rendimiento que el mtodo de Insercin clsico.
DESVENTAJ AS:
Implementacin algo confusa.
Realiza numerosas comparaciones e intercambios.



10

CDIGO EN C++

Void Shell(void)
{
Int intervalo, k, j, i, aux;
Intervalo RANGO / 2;
While(intervalo > 0)
{
for(i = intervalo 1; i < RANGO; i++)
{
J = i inervalo;
While(j >= 0)
{
K = j + intervalo;
if(vector[k] <= vector [j])
{
aux = vector[j];
vector[j] = vector[k];
vector[k] = aux;
}
else
j = 0;
j = j intervalo;
ver_valores(vector);
}
}
intervalo = intervalo /2;
}
}










11

CONCLUSI ONES

La eficiencia de los distintos algoritmos de ordenamiento puede compararse
utilizando datos empricos, dado que la velocidad de un proceso de
ordenamiento vara enormemente segn las caractersticas del conjunto de datos
a ordenar, para obtener resultados empricos precisos se debe realizar un gran
nmero de ejecuciones de cada algoritmo sobre conjuntos de datos aleatorios, y
luego, promediar los tiempos de ejecucin para obtener una idea fiel del
rendimiento.

El tiempo que requiere este algoritmo depende siempre de qu sucesin de
incrementos se use. No requiere memoria adicional.


Su complejidad es difcil de calcular y depende mucho de la secuencia de
incrementos que utilice.

RECOMENDACI ONES

Al trabajar en el diseo de un algoritmo es fundamental tener en cuenta dos
factores:
Tiempo de procesamiento y espacio de memoria ocupada.

No usar una cantidad excesiva de nmeros a ordenar ya que tomara mucho
tiempo en el clculo de la misma.

Buscar un mtodo de ordenamiento de acuerdo a sus necesidades para una mejor
eficiencia en el ordenamiento y procesamiento de la misma, y de esta manera
ahorrar tiempo.




12

BI BLI OGRAF A

Valencia. (2011), mtodo de ordenamiento ShellSort, universidad de Argentina
John F. Kennedy, editorial planeta.

Sintes. (2010), comparativa de ordenamiento ShellSort, universidad Tecnolgica
de Pereira, editorial de chicago.

Lpez. (2014). Anlisis de algoritmos de ordenamiento y seleccin, recuperado
el: 3, julio, 2014. URL
http://eisc.univalle.edu.co/materias/FADA/clases/ordenamiento1.pdf

Barrientos. (2012), Anlisis programacin de ShellSort, recuperado el: 3, julio,
2014. URL
http://latecladeescape.com/t/Ordenaci%C3%B3n+por+el+m%C3%A9todo+de+
Shell+(ShellSort)

Anda mungkin juga menyukai