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.
Donald 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
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.