Está en la página 1de 16

PRESENTADO POR:

BALCAZAR RENGIFO. ALBERTO


PAYN. LEIDY VIVIANA
ORDOEZ G. YULI ANDREA
NUEZ. JESSICA ALEAN
SHELL SORT
ANLISIS DEL ALGORITMO
SHELLSORT
Denominado as por su desarrollador
Donald Shell (1959), ordena una
estructura de una manera similar a la del
Bubble Sort, sin embargo no ordena
elementos adyacentes sino que utiliza una
segmentacin entre los datos. Esta
segmentacin puede ser de cualquier
tamao de acuerdo a una secuencia de
valores que empiezan con un valor grande
y van disminuyendo hasta llegar al '1'.
DESCRIPCIN DEL MTODO
El ShellSort ordena subgrupos de elementos
separados K unidades (respecto de su posicin
en el arreglo) del arreglo original. El valor K es
llamado incremento.
Despus de que los primeros K subgrupos han
sido 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.
DESCRIPCIN DEL MTODO

Cuando el incremento toma un valor de 1,


todos los elementos pasan a formar parte
del subgrupo y se aplica insercin directa.
Para ilustrar mejor el proceso que sigue el
procedimiento ShellSort, se tomar como
ejemplo el vector :{6,1,5,2,3,4,0}.
5>
014
4 12
56
46>>>6
>>2
145
30
432

6 1 4
2
0 5 3
2 0 4
6
2
4 3 5
4 6
0

Salto 1
3

Dev C++
a[0] a[1] a[2] a[3] a[4] a[5] a[6]
Lista Original n=7.
6 1 5 2 3 4 0
Intervalo Inicial: n/2=7/2=3
Intervalos Siguientes=IntervaloAnterior/2
Se compara a[i] con a[i+Intervalo]
Si No Estn Ordenados Entonces CAMBIARLOS

Paso Intervalo Parejas que Intercambian por La Lista Queda


estar desordenados

1 3 (6,2)= 2, 1, 5,6, 3, 4, 0
(5,4)= 2, 1, 4,6, 3,5, 0
(6;0)=2, 1, 4,0, 3,5, 6 2, 1, 4,0, 3,5, 6

2 3 (2, 0)=0, 1, 4,2, 3,5, 6 0, 1, 4,2, 3,5, 6


3 3 Ninguno 0, 1, 4,2, 3,5, 6
4 3/2=1 (4, 2)=0, 1, 2,4, 3,5, 6
(4, 3)= 0, 1, 2,3,4,5, 6 0, 1, 2,3, 4,5, 6

5 1 Ninguno Lista Ordenada


void ordenacionShell(int a[], int n)
{
int i, j, k, intervalo = n / 2;
int temp;
while (intervalo > 0)
{
for (i = intervalo; i n; i++)
{
j = i - intervalo;
while (j >= 0)
{
k = j + intervalo; //queda k=i;
if (a[j] <= a[k]) j = -1; /*termina el bucle, par ordenado */
else
{
temp = a[j];
a[j] = a[k];
a[k] = temp;
j -= intervalo;
} El 1er while: Log2n
} El for: n
}
intervalo = intervalo / 2; F(n)=n*Log2(n)
}
}
COMPLEJIDAD
Dependiendo de la eleccin de la secuencia de
espacios, Shell sort tiene un tiempo de ejecucin
en el peor caso de O(n2) (usando los incrementos
de Shell que comienzan con 1/2 del tamao del
vector y se dividen por 2 cada vez

La existencia de una implementacin O(nlogn) en


el peor caso del Shell sort permanece como una
pregunta por resolver.
Hibbard (2k 1) se escogen : EJ: 15 7 3 1.
En este caso en el caso peor el costo es de
n1.3 y en el promedio n1.2

Sedgewick propuso otras secuencias (9(4i)


9(2i) + 1, 4i + 1 + 3(2i) + 1), EJ: 1, 5, 19, 41,
109... ,en las cuales el costo en el peor caso
es n4/3 y en el promedio n7/6
COMPLEJIDAD EXPERIMENTAL
La grafica se obtuvo con las siguientes
condiciones de entrada:
Aleatorio: Tiempo de ejecucin para 50 tiempos
generados de manera aleatoria, con
incrementos de 2000 en el tamao del vector.
Ordenado: Tiempo de ejecucin para 50
arreglos ordenados anticipadamente.
Incrementos de 2000.
Desordenado: Tiempo de ejecucin para 50
arreglos que contienen datos ordenados de
Mayor a Menor. Incrementos de 2000.
COMPLEJIDAD EXPERIMENTAL
VENTAJAS DEL ALGORITMO
SHELLSORT

Es un algoritmo muy simple teniendo un


tiempo de ejecucin aceptable .
Es uno de los algoritmos ms rpidos.
No requiere memoria adicional.
DESVENTAJAS DEL ALGORITMO
SHELLSORT
Su complejidad es difcil de calcular y
depende mucho de la secuencia de
incrementos que utilice.
ShellSort es un algoritmo no es estable
porque se puede perder el orden relativo
inicial con facilidad .
CONCLUSIONES
El tiempo que requiere este algoritmo
depende siempre de qu sucesin de
Incrementos se use.
Es importante recalcar que es de gran
ayuda realizar una prueba experimental
del algoritmo, debido a que el anlisis
anteriormente planteado se fundamenta
con datos reales, que sustentan la
complejidad encontrada.
GRACIAS

También podría gustarte