Quick Sort

18
Quicksort

Transcript of Quick Sort

Page 1: Quick Sort

Quicksort

Page 2: Quick Sort

QUICKSORTDeclaremos un arreglo de 9 posiciones con numeros aleatorios...

Page 3: Quick Sort

QUICKSORT

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Declaramos el primer elemento del arreglo como primeroY al ultimo como ultimo.

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Primero Ultimo

Page 4: Quick Sort

QUICKSORT

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Primero Ultimo

Pivote

Declaramos el primero como el pivote del arreglo.

Page 5: Quick Sort

QUICKSORT

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Primero Ultimo

Up

Pivote 44

Down

Colocamos a Up como Primero y Down como Ultimo.

Page 6: Quick Sort

QUICKSORT

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Primero Ultimo

Up Down

Muevo Up al primer valor mayor que el pivote

Up

Despues movemos Down al primer valor de derecha a izquierdamenor que el pivote (en este caso Down no se mueve).

Pivote 44

Page 7: Quick Sort

QUICKSORT

44 75 23 43 55 12 64 77 33

1 2 3 4 5 6 7 8 9

Primero Ultimo

DownUp

Pivote 44

Ahora intercambiamos los valores de Up y Down

44 33 23 43 55 12 64 77 75

1 2 3 4 5 6 7 8 9

Page 8: Quick Sort

QUICKSORT

44 33 23 43 55 12 64 77 75

1 2 3 4 5 6 7 8 9

PrimeroDownUp

Pivote 44

Ultimo

Desde la posicion en que se encuentra movemos Up a un valor mayorque el pivote.

44 33 23 43 55 12 64 77 75

1 2 3 4 5 6 7 8 9

PrimeroDownUp

Ultimo

Page 9: Quick Sort

QUICKSORT

44 33 23 43 55 12 64 77 75

1 2 3 4 5 6 7 8 9

PrimeroUp UltimoDown

Cambiamos Down a la posicion menor que el pivote recorriendo deDerecha a Izquierda

Down

Pivote 44

Page 10: Quick Sort

QUICKSORT

44 33 23 43 55 12 64 77 75

1 2 3 4 5 6 7 8 9

PrimeroUp UltimoDown

Down

Pivote 44

Intercambiamos los valores de Up y Down…

44 33 23 43 12 55 64 77 75

1 2 3 4 5 6 7 8 9

Page 11: Quick Sort

QUICKSORT

44 33 23 43 12 55 64 77 75

1 2 3 4 5 6 7 8 9

Primero Up UltimoDown

Pivote 44

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.

44 33 23 43 12 55 64 77 75

1 2 3 4 5 6 7 8 9

Primero Up Down Ultimo

Page 12: Quick Sort

QUICKSORT

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

12 33 23 43 44 55 64 77 75

1 2 3 4 5 6 7 8 9

Primero Down Ultimo

Pivote 44

PivIndex

Ahora notemos que todos los valores debajo de PivIndex son menores que el y los que estan por encima son mayores que el.

Page 13: Quick Sort

QUICKSORT

12 33 23 43 44 55 64 77 75

1 2 3 4 5 6 7 8 9

Primero 1 Ultimo 1

PivIndex

Esto nos da ahora dos nuevos subarreglos que hay que ordenar

Ultimo 2Primero 2

Se debe repetir el proceso hasta que los subarreglos estén ordenados, lo cual nos dará como resultado el arreglo ordenado.

Page 14: Quick Sort

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

Page 15: Quick Sort

QUIKSORT

Page 16: Quick Sort

QUICKSORT

1. Inicio quicksort( i , j : enteras)2. indice-pivoteencuentra-pivote( i , j)3. Si indice-pivote < > 0 entonces

3.1 pivote A[indice-pivote].data3.2 kparticion( i , j , pivote)3.3 quicksort( i , k – 1)3.4 quicksort(k , j )

4. Fin quicksort

Page 17: Quick Sort

QUICKSORT

1. Inicio encuentra-pivote( i , j : enteras)2. primera-claveA[i].data3. Para k i +1 hasta j hacer

3.1 Si a[k].data > primera-clave entoncesreturna k

de lo contrario,Si A[k].data > primera-clave entoncesreturna i

4. returna 05. Fin

Page 18: Quick Sort

QUICKSORT1. Inicio partición( i , j : enteras, pivote:tipo-clave) : entero2. z i;3. dj;4. Repetir

intercambiar(A[z],A[d])Mientras A[z].data < pivote hacer

z z + 1Mientras A[d].data >= pivote hacer

d d + 1hasta z > d

4. returna z5. Fin