Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Shell Sort
o
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Ahora a por otro... el 21 y el 78
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Están en orden entre ellos, así que se quedan como
están.
Ahora le toca al sub-arreglo formado por el 44 y el 65
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Que también están en orden entre ellos... y finalmente el
38 y el 88, que también están en orden.
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Hemos formado 5 sub-arreglos en los cuales los
elementos están separados por 5 lugares (porque k=5).
Hemos ordenado cada sub-arreglo por separado
utilizando inserción directa, y hemos logrado que cada
elemento se dirija hacia su ubicación definitiva en
pasos de 5 lugares.
Por supuesto, no hemos terminado todavía, pero
resulta evidente que algunos elementos, como el 30, el
97 o el 11 han dado un gran salto y que no deben andar
muy lejos de su sitio final.
Decimos ahora que el arreglo está 5-ordenado.
Para continuar con el algoritmo, debemos ir
reduciendo progresivamente k dividiéndolo
sucesivamente por 2 y k-ordenando los sub-arreglos
que nos salgan (recuerda que nos salen k sub-
arreglo). Cuando lleguemos a k=1 habremos
terminado.
Pero de momento, nuestra k valía 5, así que ahora
k←k/2=5/2=2
Nuestra nueva k vale 2. Repetimos todo el tinglado,
pero ahora nos saldrán 2 sub-arreglo cuyos
elementos están separados por 2 lugares.
El primero (en marrón) y el segundo (en verde):
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Ordenamos por un lado los marrones entre ellos y los
verdes entre ellos... es decir, 2-ordenamos el arreglo
(curiosamente, los verdes ya están ordenados....
probablemente ha contribuido a ello la 5-ordenación que
ya hemos hecho. En ese caso, la ordenación ha
requerido muy poco esfuerzo)
14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97
Ahora, cada número está mucho más cerca de su
posición definitiva... El arreglo está 2-ordenado... pero
sigue también 5-ordenado. No hemos perdido el
trabajo que hicimos cuando k era 5.