SlideShare uma empresa Scribd logo
1 de 18
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


                                            Ultimo
    Primero

 Pivote

   Declaramos el primero como el pivote del arreglo.
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.
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).
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
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
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
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
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
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.
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
QUIKSORT
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

Mais conteúdo relacionado

Mais procurados

Algoritmos aproximados - El problema de la mochila 0-1
Algoritmos aproximados - El problema de la mochila 0-1Algoritmos aproximados - El problema de la mochila 0-1
Algoritmos aproximados - El problema de la mochila 0-1Alejandro Claro Mosqueda
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSortFernando Solis
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptxFernando Solis
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Presentacion arbol-binario
Presentacion arbol-binarioPresentacion arbol-binario
Presentacion arbol-binarioMariela Cabezas
 
Metodo de ordenacion por Insercion
 Metodo de ordenacion por Insercion Metodo de ordenacion por Insercion
Metodo de ordenacion por InsercionMateo Falcon
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalAngel Vázquez Patiño
 
Insertion sort
Insertion sortInsertion sort
Insertion sortMichael
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesMago Julio Cesar
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTODaniel Guaycha
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externaEdwin Narváez
 
4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externoFernando Solis
 

Mais procurados (20)

Algoritmos aproximados - El problema de la mochila 0-1
Algoritmos aproximados - El problema de la mochila 0-1Algoritmos aproximados - El problema de la mochila 0-1
Algoritmos aproximados - El problema de la mochila 0-1
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Quicksort
QuicksortQuicksort
Quicksort
 
Comparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de OrdenamientoComparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de Ordenamiento
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx
 
Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Presentacion arbol-binario
Presentacion arbol-binarioPresentacion arbol-binario
Presentacion arbol-binario
 
Metodo de ordenacion por Insercion
 Metodo de ordenacion por Insercion Metodo de ordenacion por Insercion
Metodo de ordenacion por Insercion
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
 
Listas
ListasListas
Listas
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Complejidad Algoritmica
Complejidad AlgoritmicaComplejidad Algoritmica
Complejidad Algoritmica
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas Circulares
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externa
 
Algoritmos c5-diap
Algoritmos c5-diapAlgoritmos c5-diap
Algoritmos c5-diap
 
4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo
 

Mais de Universidad Nacional de Colombia (20)

Presentación3 bildervonderküche
Presentación3 bildervonderküchePresentación3 bildervonderküche
Presentación3 bildervonderküche
 
Tarde ludica2
Tarde ludica2Tarde ludica2
Tarde ludica2
 
Presentación powerpointfinal web
Presentación powerpointfinal webPresentación powerpointfinal web
Presentación powerpointfinal web
 
Greenhouse effect
Greenhouse effectGreenhouse effect
Greenhouse effect
 
Acid rain
Acid rainAcid rain
Acid rain
 
Practica xml
Practica xmlPractica xml
Practica xml
 
Flash
FlashFlash
Flash
 
Vb script
Vb scriptVb script
Vb script
 
Php (hipertex pre processor)
Php (hipertex pre processor)Php (hipertex pre processor)
Php (hipertex pre processor)
 
Precentacion asp
Precentacion aspPrecentacion asp
Precentacion asp
 
My sql
My sqlMy sql
My sql
 
Java script
Java scriptJava script
Java script
 
Hojas de estilo (css)
Hojas de estilo (css)Hojas de estilo (css)
Hojas de estilo (css)
 
Dhtml
DhtmlDhtml
Dhtml
 
Google Forms Español
Google  Forms EspañolGoogle  Forms Español
Google Forms Español
 
Google Forms Español
Google Forms EspañolGoogle Forms Español
Google Forms Español
 
Video Games
Video GamesVideo Games
Video Games
 
Paipa (Boyacá)
Paipa (Boyacá)Paipa (Boyacá)
Paipa (Boyacá)
 
Sydney
SydneySydney
Sydney
 
MüNich (IngléS)
MüNich (IngléS)MüNich (IngléS)
MüNich (IngléS)
 

Quick Sort

  • 1.
  • 2. QUICKSORT Declaremos un arreglo de 9 posiciones con numeros aleatorios...
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 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 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).
  • 7. 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
  • 8. 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
  • 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 Cambiamos Down a la posicion menor que el pivote recorriendo de Derecha a Izquierda
  • 10. 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
  • 11. 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
  • 12. 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.
  • 13. 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.
  • 14. 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
  • 16. 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
  • 17. 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
  • 18. 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