Está en la página 1de 17

QUICKSORT

Declaremos un arreglo de 9
posiciones con numeros
aleatorios...
QUICKSORT
1 2 3 4 5 6 7 8 9
44 75 23 43 55 12 64 77 33

Declaramos el primer elemento del arreglo como primero


Y al ultimo como ultimo.

1 2 3 4 5 6 7 8 9
44 75 23 43 55 12 64 77 33

Primero Ultimo
QUICKSORT

1 2 3 4 5 6 7 8 9
44 75 23 43 55 12 64 77 33

Primero Ultimo

Pivote

Declaramos el primero como el pivote del arreglo.


QUICKSORT

1 2 3 4 5 6 7 8 9
Pivote
44 44 75 23 43 55 12 64 77 33

Primero Ultimo

Up Down

Colocamos a Up como Primero y Down como Ultimo.


QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote 44 75 23 43 55 12 64 77 33
44

Primero Ultimo

Up Up Down

Muevo Up al primer valor mayor que el pivote


Despues movemos Down al primer valor de derecha a izquierda
menor que el pivote (en este caso Down no se mueve).
QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote 44 75 23 43 55 12 64 77 33
44

Primero Ultimo
Up Down

Ahora intercambiamos los valores de Up y Down

1 2 3 4 5 6 7 8 9
44 33 23 43 55 12 64 77 75
QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote 44 33 23 43 55 12 64 77 75
44

Primero Ultimo
Up Down
Desde la posicion en que se encuentra movemos Up a un valor mayor
que el pivote. 1 2 3 4 5 6 7 8 9

44 33 23 43 55 12 64 77 75

Primero Ultimo
Up Down
QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote
44 44 33 23 43 55 12 64 77 75

Primero
Up Down Ultimo
Down

Cambiamos Down a la posicion menor que el pivote recorriendo de


Derecha a Izquierda
QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote
44 44 33 23 43 55 12 64 77 75

Primero
Up Down Ultimo
Down

Intercambiamos los valores de Up y Down…


1 2 3 4 5 6 7 8 9
44 33 23 43 12 55 64 77 75
QUICKSORT
1 2 3 4 5 6 7 8 9
Pivote 44 33 23 43 12 55 64 77 75
44
Primero Up Down Ultimo
Movemos Up desde la posicion en que se encuetra a la primera
posicion mayor que el pivote y Down a la primera posicion de
derecha a Izquierda menor que el pivote.
1 2 3 4 5 6 7 8 9
44 33 23 43 12 55 64 77 75

Primero Up Down Ultimo


QUICKSORT
Como Up y Down se cruzaron, entonces debemos
intercambiar el valor de Down por el pivote.

Pivote 1 2 3 4 5 6 7 8 9
44
12 33 23 43 44 55 64 77 75

Primero Down Ultimo


PivIndex
Ahora notemos que todos los valores debajo de PivIndex son
menores que el y los que estan por encima son mayores que el.
el
QUICKSORT
Esto nos da ahora dos nuevos subarreglos que hay que ordenar

1 2 3 4 5 6 7 8 9
12 33 23 43 44 55 64 77 75

Primero 1 Ultimo 1 Primero 2 Ultimo 2


PivIndex
Se debe repetir el proceso hasta que los subarreglos estén
ordenados, lo cual nos dará como resultado el arreglo
ordenado.
QUICKSORT
El algoritmo del método de ordenamiento estará formado
por tres procesos:

• QuickSort, proceso que inicia el ordenamiento.


• Encuentra Pivote, busca el mejor pivote a partir
del primer elemento del vector
• Partición, va comparando por ambos extremos e
intercambia en caso de ser necesario
QUICKSORT
1. Inicio quicksort( i , j : enteras)
2. indice-pivoteencuentra-pivote( i , j)
3. Si indice-pivote < > 0 entonces
3.1 pivote  A[indice-pivote].data
3.2 kparticion( i , j , pivote)
3.3 quicksort( i , k – 1)
3.4 quicksort(k , j )
4. Fin quicksort
QUICKSORT
1. Inicio encuentra-pivote( i , j : enteras)
2. primera-claveA[i].data
3. Para k i +1 hasta j hacer
3.1 Si a[k].data > primera-clave entonces
returna k
de lo contrario,
Si A[k].data > primera-clave entonces
returna i
4. returna 0
5. Fin
QUICKSORT
1. Inicio partición( i , j : enteras, pivote:tipo-clave) : entero
2. z i;
3. dj;
4. Repetir
intercambiar(A[z],A[d])
Mientras A[z].data < pivote hacer
zz+1
Mientras A[d].data >= pivote hacer
d d + 1
hasta
z>d
4. returna z
5. Fin

También podría gustarte