Está en la página 1de 7

Universidad de Santiago de Chile

Ingeniera Civil en Electricidad Laboratorio de Computacin

Algoritmo de ordenamiento Shell Sort

Ayudante: Integrantes:

Cristbal Fica Francisco Cares Michael Vargas

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Contenido
Algoritmo de ordenamiento Shell Sort ........................................................................................ 1 Introduccin .................................................................................................................................. 3 Shell Sort ....................................................................................................................................... 3 Memoria .................................................................................................................................... 4 Pseudocdigo ................................................................................................................................ 5 Cdigo en Matlab .......................................................................................................................... 6 Aplicacin y alcances ..................................................................................................................... 6 Conclusin ..................................................................................................................................... 7 Bibliografa .................................................................................................................................... 7

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Introduccin

El ordenamiento Shell (Shell Sort en ingls) es un algoritmo de ordenamiento, denominado as en honor a su inventor Donald Shell, que lo public en 1959. Algunos libros de texto y referencias antiguas le llaman ordenacin "Shell-Metzner" por Marlene Metzner Norton, pero segn Metzner, "No tengo nada que ver con el algoritmo de ordenamiento, y mi nombre nunca debe adjuntarse a ste.". El Shell Sort es una mejora del algoritmo de ordenamiento por insercin (Insertsort).

Shell Sort

La forma en que trabaja Shell Sort es la siguiente: Organizar la secuencia de datos en una matriz de dos dimensiones Ordenar las columnas de la matriz

El efecto producido es una secuencia de datos que se clasifica parcialmente. El proceso anterior se repite, pero cada vez con una gama ms estrecha, es decir, con un menor nmero de columnas. En el ltimo paso, la matriz consta de una sola columna. En cada paso, el ordenamiento de la secuencia se incrementa, hasta que en el ltimo paso se encuentre completamente ordenado. Sin embargo, el nmero de operaciones necesarias en cada paso de clasificacin es limitado, debido al pre-ordenamiento de la secuencia obtenida en los pasos anteriores.

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Memoria
ShellSort trabaja en la memoria principal, por lo que se asume que el tiempo de acceso es el mismo para cualquier elemento (acceso aleatorio). Ejemplo: Supongamos que [3 7 9 0 5 1 8 6 4 2 0 6 1 5 7 3 4 9 8 2] sea la secuencia de datos para ser resuelto. En primer lugar, est dispuesto en una matriz con 7 columnas (izquierda), a continuacin, se ordenan las columnas (a la derecha): 3 7 9 0 5 1 6 8 4 2 0 6 1 5 7 3 4 9 8 2 3 3 2 0 5 1 5 7 4 4 0 6 1 6 8 7 9 9 8 2

Los elementos de datos 8 y 9 ahora ya han llegado al final de la secuencia, sino un elemento pequeo (2) tambin sigue ah. En el siguiente paso, la secuencia est dispuesta en 3 columnas, que se ordenan de nuevo: 3 3 2 0 5 1 5 7 4 4 0 6 1 6 8 7 9 9 8 2 0 0 1 1 2 2 3 3 4 4 5 6 5 6 8 7 7 9 8 9 Ahora la secuencia est casi completamente solucionada. Cuando la organizacin de una columna en el ltimo paso, que es slo un 6, un 8 y un 9 tienen que trasladarse a su posicin correcta.

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Pseudocdigo

1) Algoritmo ShellSort(lista) 2) Pre: lista0 3) Post: lista tiene un ordenamiento en los valores de forma ascendente 4) incrementolista. Contador/2 5) While incremento0 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16) 17) Actualincremento While actual<lista. Contador holdlista[actual] iactual incremento While i0 and hold<lista[i] Lista[i+incremento]lista[i] i-=incremento End While List[i + incremento]hold actualactual+1 end While incremento/=2

18) end While 19) return lista 20) end ShellSort

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Cdigo en Matlab
function dataOut = shellSort(data) lenD = size(data,2); inc = cast(lenD/2,'int16'); while(inc>0) for i=inc:lenD tmp = data(i); j = i; while(j>inc && data(j-inc)>tmp) data(j) = data(j-inc); j = j-inc; end data(j) = tmp; end inc = cast(floor(double(inc) /2),'int16'); end dataOut = data;

Aplicacin y alcances
Aplicaciones evidentes: Mostrar los ficheros de un directorio. Mostrar un listado ordenado del contenido de una base de datos (ej.: listado alfabtico). Ordenar los resultados de una bsqueda en Internet (ej.: Google, PageRank).

Problemas que resultan ms sencillos de resolver con de Solver de ordenamiento: Realizar una bsqueda (p.ej... bsqueda binaria). Encontrar la mediana. Encontrar el par ms cercano. Identificar / outliers / anomalas Detectar duplicados.

25 de octubre de 2013

Pgina

Universidad de Santiago de Chile


Ingeniera Civil en Electricidad Laboratorio de Computacin

Conclusin

El anlisis de su eficiencia es un problema complicado y aun no resuelto, puesto que, ninguna persona ha sido capaz de establecer la mejor secuencia de incrementos cuando N es muy grande. De modo que Shell Sort no es el algoritmo ms eficiente para ordenar arreglos comparndolo con la complejidad de los algoritmos Quicksort, Mergesort y Heapsort, sin embargo, es un algoritmo mucho ms fcil de programar. Su simplicidad radica en que deriva del algoritmo ms simple para ordenar, Insert Sort.

Bibliografa
Enciclopedia libre, Wikipedia. Modificada por ltima vez el 8 agosto, 2013.

http://es.wikipedia.org/wiki/Ordenamiento_Shell Algoritmos de Ordenamiento, Fernando A. Lagos B.

http://blog.zerial.org/ficheros/Informe_Ordenamiento.pdf Fachhochschule Flensburg, Universidad de Ciencias Aplicadas, Alemania. Publicado el 29 enero, 1998. http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/shell/shellen.htm

25 de octubre de 2013

Pgina

También podría gustarte