Вы находитесь на странице: 1из 16

Universidad Nacional Mayor de San Marcos

(universidad del Per,Decana de Amrica)

Facultad de Ciencias Matemticas


Escuela Acadmica Profesional de Computacin Cientca
Ciencia de la Computacin I

E.A.P : COMPUTACIN CIENTFICA


SEMESTRE ACADMICO : 2014-I

CIENCIA DE LA COMPUTACION I

Tema: METODO DE INCREMENTOS (SHELLSORT)

Alumnos: Garca Garca, Alex Vianney

Antonio Calvo,Jhon

Barrantes Navarro, Rosa

Profesor: Edwin Chvez R.

Fecha: Jueves, 10 de Julio del 2014

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
5
6
>>2
145
30
4
46>>>6
32
6 1 4
2
0
5 3
2
0 4
6
2
4
3 5
4 6
0

Salto 1
3
Dev C++

Lista Original n=7.


Intervalo Inicial: n/2=7/2=3

a[0] a[1] a[2] a[3] a[4]

a[5]

a[6]

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

(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, 0)=0, 1, 4,2, 3,5, 6

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

Ninguno

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

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

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

Вам также может понравиться