Quick Sort

12,906 views

Published on

1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
12,906
On SlideShare
0
From Embeds
0
Number of Embeds
1,313
Actions
Shares
0
Downloads
333
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Quick Sort

  1. 1. QUICKSORT Declaremos un arreglo de 9 posiciones con numeros aleatorios...
  2. 2. 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
  3. 3. QUICKSORT 1 2 3 4 5 6 7 8 9 44 75 23 43 55 12 64 77 33 Ultimo Primero Pivote Declaramos el primero como el pivote del arreglo.
  4. 4. QUICKSORT 1 2 3 4 5 6 7 8 9 Pivote 44 75 23 43 55 12 64 77 33 44 Ultimo Primero Up Down Colocamos a Up como Primero y Down como Ultimo.
  5. 5. QUICKSORT 1 2 3 4 5 6 7 8 9 44 75 23 43 55 12 64 77 33 Pivote 44 Ultimo Primero 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).
  6. 6. QUICKSORT 1 2 3 4 5 6 7 8 9 44 75 23 43 55 12 64 77 33 Pivote 44 Ultimo Primero 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
  7. 7. QUICKSORT 1 2 3 4 5 6 7 8 9 44 33 23 43 55 12 64 77 75 Pivote 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
  8. 8. QUICKSORT 1 2 3 4 5 6 7 8 9 Pivote 44 44 33 23 43 55 12 64 77 75 Primero Down Ultimo Up Down Cambiamos Down a la posicion menor que el pivote recorriendo de Derecha a Izquierda
  9. 9. QUICKSORT 1 2 3 4 5 6 7 8 9 Pivote 44 44 33 23 43 55 12 64 77 75 Primero Down Ultimo Up 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
  10. 10. QUICKSORT 1 2 3 4 5 6 7 8 9 44 33 23 43 12 55 64 77 75 Pivote 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
  11. 11. QUICKSORT Como Up y Down se cruzaron, entonces debemos intercambiar el valor de Down por el pivote. 1 2 3 4 5 6 7 8 9 Pivote 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.
  12. 12. 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.
  13. 13. 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
  14. 14. QUIKSORT
  15. 15. 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
  16. 16. 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
  17. 17. 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

×