Es un método diseñado para ordenar arreglos que posean una gran cantidad de datos, ShellSort trabaja mediante una serie de iteraciones comparando elementos que se encuentran separados por un espacio de varias posiciones. Cada espacio va disminuyendo a medida que se realizan las iteraciones.
Ejemplo:
Tenemos un arreglo con los siguientes elementos
23 | 60 | 55 | 34 | 6 | 99 | 71 | 33 |
supongamos que los incrementos soon (5,3,1)
incremento = 5:
(x[0], x[5]) |
(x[1], x[6]) |
(x[2], x[7]) |
(x[3]) |
(x[4]) |
incremento = 3:
(x[0], x[3], x[6]) |
(x[1], x[4], x[7]) |
(x[2], x[5]) |
incremento = 1:
(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]) |
Ahora ordenaremos con ShellSort
arreglo original | 23 | 60 | 55 | 34 | 6 | 99 | 71 | 33 | |
paso 1 salto = 5 |
23 | 60 | 55 | 34 | 6 | 99 | 71 | 33 | |
nuevo orden | 23 | 60 | 33 | 34 | 6 | 99 | 71 | 55 | |
paso 2 salto = 3 |
23 | 60 | 33 | 34 | 6 | 99 | 71 | 55 | |
nuevo orden | 23 | 6 | 33 | 34 | 55 | 99 | 71 | 60 | |
paso 3 salto = 1 |
23 | 6 | 33 | 34 | 55 | 99 | 71 | 60 | |
arreglo ordenado | 6 | 23 | 33 | 34 | 55 | 60 | 71 | 99 |