Ordenamiento por Método Shell

Unidad de Apoyo para el Aprendizaje

Iniciar

Introducción

El método de ordenamiento Shell consiste en dividir el arreglo (o la lista de elementos) en intervalos (o bloques) de varios elementos para organizarlos después por medio del ordenamiento de inserción directa. El proceso se repite, pero con intervalos cada vez más pequeños, de tal manera que al final, el ordenamiento se haga en un intervalo de una sola posición, similar al ordenamiento por inserción directa, la diferencia entre ambos es qué, al final, en el método ShellSu nombre proviene de su creador, Donald Shell, y no tiene que ver en la forma como funciona el algoritmo. los elementos ya están casi ordenados.



Estructura de datos

Donald Shell

El estudio de este tema te permitirá:

Generar un código de programación, a partir del reconocimiento de las características del método de ordenación Shell, para la manipulación de datos en la solución de diferentes problemas.

Método Shell


Existen varias formas de calcular el intervalo, lo cual puede mejorar la efectividad del algoritmo. A continuación, explicaremos la secuencia original propuesta por Shell: n/2, n/4…, n/n, es decir, uno (dividir entre dos, hasta que el último intervalo sea uno), donde n es el tamaño del arreglo.

Observa el siguiente ejemplo, donde se aclara a detalle lo planteado anteriormente; en él podrás observar los pasos para llevar a cabo este tipo de ordenamiento sobre el arreglo desordenado:




Haz clic en cada número o en las flechas para desplegar el contenido.

En la siguiente imagen vemos la implementación de este método de ordenamiento en Lenguaje C.

Declaración en Lenguaje C de la función para el método de ordenamiento Shell

Declaración en Lenguaje C de la función para el método de ordenamiento Shell


Este algoritmo es muy eficiente para los conjuntos de datos de tamaño medio, ya que su complejidad media, en el peor de los casos es O(n), donde n es el número de elementos.

Actividad. Características del método Shell

El método de ordenamiento Shell se considera más avanzado y más utilizado para listas grandes.

Indica si las características de este método, que se mencionan a continuación, son Falsas o Verdaderas.


Autoevaluación. Programación del método Shell

El método Shell resulta más útil que otros, ya que a través de él se puede dividir en subtareas el trabajo, haciendo ordenamientos independientes para después unirlos.

En las siguientes sentencias de programación, elige la respuesta correcta a cada reactivo que se te presenta. Al finalizar podrás conocer tu desempeño.

Fuentes de información

Básicas

Bibliografía

Domínguez, E. (2014). Programación estructurada: raptor y lenguaje C. México: Alfaomega.

Guardati, S. (2015). Estructuras de datos básicas: programación orientada a objetos con java. México: Alfaomega.

Joyanes, L. (1998). Fundamentos de programación: algoritmos y estructuras de datos. Madrid: McGraw-Hill.

Kalicharan, N. (2013). Advanced topics in C: core concepts in data structures. California: Apress.

López, B. (2012). Estructuras de datos orientadas a objetivos: pseudocódigo y aplicaciones en C#.NET. México: Alfaomega.

López, B. (2015). Estructuras de datos orientadas a objetos. México: Alfaomega.

Maes, R. (2013). Physically unclonable functions: constructions, properties and applications.
Berlín: Springer.

Malik, D. (2013). Estructura de datos con C++. México: Cengage Learning.

Weiss, M. A. (2012). Data Structures and Algorithm Analisis in Java: New Jersey: Pearson Edication.


Documentos electrónicos

Martínez, J. y Castro, R. (2012). Programación (Estructura de Datos). Apunte electrónico [Versión electrónica]. México: UNAM-SUAYED-FCA. Consultado el 12 de febrero de 2018 de http://fcasua.contad.unam.mx/apuntes/interiores/docs/20172/informatica/3/apunte/LI_1361_30096_A_Prog_estruc_datos_V1.pdf


Complementarias

Bibliografía

López, A. (2011). Estructura de datos con JAVA: un enfoque práctico. México: UNAM-Facultad de Ciencias.

Luján, S., Ferrández, A., Peral, J., y Requena, A. (2014). Ejercicios resueltos sobre programación y estructuras de datos. Alicante: Publicaciones de la Universidad de Alicante.

Mora, A. (2014). Bases de datos: diseño y gestión. Madrid: Editorial Síntesis.

Weiss, M. A. (2013). Estructuras de datos en Java. Madrid: Pearson


Cómo citar