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

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)Fuerza Auriazul
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no linealeslos4estatidinamicos
 
Método de ordenamiento shell (1)
Método de ordenamiento shell (1)Método de ordenamiento shell (1)
Método de ordenamiento shell (1)kikecarvajalino
 
Gestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativosGestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativoschikscorpion_23
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicasPatriciaU
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)José Antonio Sandoval Acosta
 
Exposicion _bucket _sort
Exposicion _bucket _sortExposicion _bucket _sort
Exposicion _bucket _sortadrianasl
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Deteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un InterbloqueoDeteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un InterbloqueoTecnologico de pinotepa
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selecciónfigocancun
 
Algotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionAlgotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionSiska Amelia
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridadGarNav
 
Estructura básica de un Sistema Operativo
Estructura básica de un Sistema Operativo Estructura básica de un Sistema Operativo
Estructura básica de un Sistema Operativo lizbethvazquezramirez
 

La actualidad más candente (20)

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Quicksort
QuicksortQuicksort
Quicksort
 
10. deadlock
10. deadlock10. deadlock
10. deadlock
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no lineales
 
Método de ordenamiento shell (1)
Método de ordenamiento shell (1)Método de ordenamiento shell (1)
Método de ordenamiento shell (1)
 
Gestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativosGestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativos
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Bases de datos distribuidas
Bases de datos distribuidasBases de datos distribuidas
Bases de datos distribuidas
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
 
Exposicion _bucket _sort
Exposicion _bucket _sortExposicion _bucket _sort
Exposicion _bucket _sort
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Deteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un InterbloqueoDeteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un Interbloqueo
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selección
 
Algotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionAlgotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - Collection
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridad
 
Estructura básica de un Sistema Operativo
Estructura básica de un Sistema Operativo Estructura básica de un Sistema Operativo
Estructura básica de un Sistema Operativo
 
Round robin apa
Round robin apaRound robin apa
Round robin apa
 
Deadlock
DeadlockDeadlock
Deadlock
 

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