Shell exposición

589 views
408 views

Published on

Algoritmo de ordenamiento Shell.

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
589
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
20
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Shell exposición

  1. 1. MÉTODO SHELL Luis Fernando Junca Christian Andrés Heredia INGENIERÍA DE SISTEMAS VILLAVICENCIO 2014
  2. 2. Historia Denominado así por su desarrollador Donald Shell (1959), ordena una estructura de una manera similar a la del Bubble Sort (método Burbuja), sin embargo no ordena elementos adyacentes sino que utiliza una segmentación entre los datos. Esta segmentación puede ser de cualquier tamaño de acuerdo a una secuencia de valores que empiezan con un valor grande y van disminuyendo hasta llegar al '1'.
  3. 3. Características • Se trata de un algoritmo de ordenación interna. Al igual que cualquier otro de ordenación interna (los datos están en memoria principal) podría utilizarse para ordenación externa (en memoria secundaria) siempre y cuando se disponga de acceso aleatorio, pero el algoritmo no fue ideado para eso. • Se basa en comparaciones e intercambios. • No es estable: dados dos elementos que al compararlos sean "iguales" no mantienen necesariamente el orden relativo inicial entre ellos.
  4. 4. Características • En cierto modo, puede considerarse una ampliación del algoritmo de inserción directa, con lo cual, conviene tenerlo claro antes de meterse con el de Shell. • No es un algoritmo en-línea. • A diferencia del algoritmo de ordenación por inserción, este algoritmo intercambia elementos distantes.
  5. 5. Descripción • El ShellSort ordena subgrupos de elementos separados K unidades (respecto de su posición en el arreglo) del arreglo original. El valor K es llamado incremento. • Después de que los primeros K subgrupos han sido ordenados (generalmente utilizando inserción directa), se escoge un nuevo valor de K más pequeño, 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 más pequeño de K.
  6. 6. Descripción • Cuando el incremento toma un valor de 1, todos los elementos pasan a formar parte del subgrupo y se aplica inserción directa. • Para ilustrar mejor el proceso que sigue el procedimiento ShellSort, se tomará como ejemplo el vector :{6,1,5,2,3,4,0}.
  7. 7. ¿Cómo funciona?
  8. 8. Código 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; } } } intervalo = intervalo / 2; } }
  9. 9. Ventajas • Es un algoritmo muy simple teniendo un tiempo de ejecución aceptable . • Es uno de los algoritmos más rápidos. • No requiere memoria adicional.
  10. 10. Desventajas • Su complejidad es difícil 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 .
  11. 11. GRACIAS

×