Documente Academic
Documente Profesional
Documente Cultură
Menores Mayores
PIVOTE
3º Realizamos esto de
forma recursiva para
que cada “subvector”
mientras este tengan
un largo mayor que 1
EJEMPLO. QUICKSORT ITERATIVO
8 1 4 9 6 3 5 2 7 0
cima=0
izq=1 Pivote = 6 der=10
inf=1 sup=10
0 1 4 9 6 3 5 2 7 8
0 1 4 9 6 3 5 2 7 8
0 1 4 9 6 3 5 2 7 8
0 1 4 9 6 3 5 2 7 0
0 1 4 2 6 3 5 9 7 8
0 1 4 2 5 3 6 9 7 8
0 1 4 2 5 3 6 9 7 8
0 1 4 2 5 3 6 9 7 8
cima=1 izq=7 Pivote = 9
Lim_izq=1 der=10
inf=7
Lim_der=6 sup=10
0 1 4 2 5 3 6 9 7 8
0 1 4 2 5 3 6 8 7 9
0 1 4 2 5 3 6 8 7 9
cima=2
Lim_izq=7
izq=7 sup=9 der=10
Lim_der=9 Inf = 10
Pivote = 9
Algoritmo Quicksort recursivo
PROCEDIMIENTO quicksort (a: tipo_vector (E/S), izq: entero (E), der: entero (E))
VAR
i,j: entero
x,w: tipo_elemento
INICIO
iizq
jder
xa [(izq+der)/2]
Mientras (i<=j) hacer
Mientras (a[i].clave<x.clave) hacer
ii+1
Fin_mientras
Mientras (x.clave<a[j].clave) hacer
jj-1
Fin_mientras
Si (i<=j) entonces
wa[i]
a[i]a[j]
a[j]w
ii+1
jj-1
Fin_si
Fin_mientras
Si (izq<j) entonces
LLAMAR A quicksort (a,izq,j)
Fin_si
Si (i<der) entonces
LLAMAR A quicksort (a,i,der)
Fin_si
FIN_PROCEDIMIENTO
Algoritmo Quicksort iterativo [1]
TIPO tipo_pila= REGISTRO
izq, der : entero
FIN_REGISTRO
TIPO tpila=vector [Max] de tipo_pila
VAR
i, j, izq, der, cima: entero
x,w: tipo_elemento
pila: tpila
INICIO
cima0
pila [0].izq0
pila [0].dern-1
Mientras (cima>=0) hacer
izqpila [cima].izq
derpila [cima].der
cimacima-1
1 2
Algoritmo Quicksort iterativo [2]
1 2
1 2
Algoritmo Quicksort iterativo [3]
1 2
Ventajas:
• Su orden de complejidad.
• Muy rápido.
• No requiere memoria adicional para su forma
recursiva, aunque para la iterativa sí que
necesita espacio adicional (para la pila).
Conclusiones
Desventajas: