2. ORDENAMIENTO SHELL
Shell nos propone que hagamos sobre el
arreglo una serie de ordenaciones basadas en la
inserción directa, pero dividiendo el arreglo
original en varios sub-arreglos tales que cada
elemento esté separado k elementos del anterior
(salto o gap).
3. ORDENAMIENTO SHELL
Se debe empezar con k=n/2, siendo n el
número de elementos de arreglo, y utilizando
siempre la división entera, después iremos
variando k haciéndolo más pequeño mediante
sucesivas divisiones por 2, hasta llegar a k=1.
4. ORDENAMIENTO SHELL
Pongamos un ejemplo:
» Se pide ordenar ascendentemente este arreglo
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30.
n=11
12. ORDENAMIENTO HEAPSORT
Según Williams[2001] un montículo o montón
se define como una secuencia de llaves hi que
tienen la siguiente relación de orden:
hi <=h2i y hi<=h2i+1
Para i= 1,2,…,N/2.
14. ORDENAMIENTO HEAPSORT
Primero: Hacerlo un montículo.
9, 15, 6, 10, 4, 24, 18, 14, 22
Comparamos la posición 4 con la 8 y 9.
10<14 y 10<22 … (V)
15. ORDENAMIENTO HEAPSORT
9, 15, 6, 10, 4, 24, 18, 14, 22
Comparamos la posición 3 con la 6 y 7.
6<24 y 6<18 … (V)
16. ORDENAMIENTO HEAPSORT
9, 15, 6, 10, 4, 24, 18, 14, 22
Comparamos la posición 2 con la 4 y 5.
15<10 y 15<4 … (F)
Se intercambia de posición quedando.
9, 4, 6, 10, 15, 24, 18, 14, 22
17. ORDENAMIENTO HEAPSORT
Puesto que se han hecho modificaciones se
comprueba para i>2
9, 4, 6, 10, 15, 24, 18, 14, 22
9, 15, 6, 10, 4, 24, 18, 14, 22
18. ORDENAMIENTO HEAPSORT
9, 4, 6, 10, 15, 24, 18, 14, 22
Comparamos la posición 1 con la 2 y 3.
9<15 y 9<6 … (F)
Se intercambia de posición quedando.
4, 9, 6, 10, 15, 24, 18, 14, 22
20. ORDENAMIENTO HEAPSORT
Ahora se repite esta secuencia pero
intercambiando el primer termino por el ultimo y
reduciendo en 1 el numero de términos del
arreglo, y construyendo e montón con los n-1
primeros términos.
22. ORDENAMIENTO HEAPSORT
Luego se sigue este proceso intercambiando el
primer termino del nuevo montículo, ya no por el
ultimo, sino por el penúltimo.
Luego se procede a formar otro nuevo montículo
con 1 término menos que el anterior :
(n-1)-1 = n-2