SlideShare una empresa de 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

Más contenido relacionado

La actualidad más candente

Bucket sort
Bucket sortBucket sort
Bucket sorteislenp
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalomorenito9001
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
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
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Bubble sort algcomp
Bubble sort algcompBubble sort algcomp
Bubble sort algcompgaby
 
Método de ordenamiento quicksort
Método de ordenamiento quicksortMétodo de ordenamiento quicksort
Método de ordenamiento quicksortjorgellanos29
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortlinkinpark03
 
Metodo de ordenacion por Insercion
 Metodo de ordenacion por Insercion Metodo de ordenacion por Insercion
Metodo de ordenacion por InsercionMateo Falcon
 
Algoritmo prim
Algoritmo primAlgoritmo prim
Algoritmo primAbraham
 
Búsqueda secuencial en tabla ordenada
Búsqueda secuencial  en tabla ordenadaBúsqueda secuencial  en tabla ordenada
Búsqueda secuencial en tabla ordenadaEdwin Chavarria
 

La actualidad más candente (20)

Colas
ColasColas
Colas
 
Bucket sort
Bucket sortBucket sort
Bucket sort
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
2.1 metodo de intervalo
2.1 metodo de intervalo2.1 metodo de intervalo
2.1 metodo de intervalo
 
Quicksort
QuicksortQuicksort
Quicksort
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Listas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas CircularesListas Doblemente Enlazadas y Listas Circulares
Listas Doblemente Enlazadas y Listas Circulares
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Comparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de OrdenamientoComparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de Ordenamiento
 
Bubble sort algcomp
Bubble sort algcompBubble sort algcomp
Bubble sort algcomp
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Método de ordenamiento quicksort
Método de ordenamiento quicksortMétodo de ordenamiento quicksort
Método de ordenamiento quicksort
 
Algoritmo de quicksort
Algoritmo de quicksortAlgoritmo de quicksort
Algoritmo de quicksort
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Quicksort
QuicksortQuicksort
Quicksort
 
Metodo de ordenacion por Insercion
 Metodo de ordenacion por Insercion Metodo de ordenacion por Insercion
Metodo de ordenacion por Insercion
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
 
Algoritmo prim
Algoritmo primAlgoritmo prim
Algoritmo prim
 
Búsqueda secuencial en tabla ordenada
Búsqueda secuencial  en tabla ordenadaBúsqueda secuencial  en tabla ordenada
Búsqueda secuencial en tabla ordenada
 

Más 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