SlideShare una empresa de Scribd logo
1 de 15
Introducción al algoritmo de ordenación QuickSort José Pino
Quicksort El mejor algoritmo de ordenación conocido actualmente (el más eficiente). Basado en la técnica divide y vencerás. O(nlogn)
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivot. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada. La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados. menorespivotmayores
voidquicksort (int[] a, int lo, inthi) { inti=lo, j=hi, h; intx=a[(lo+hi)/2]; do     {     while (a[i]<x) i++;  while (a[j]>x) j--; if (i<=j)         {             h=a[i]; a[i]=a[j]; a[j]=h;             i++; j--;         }     } while (i<=j); if(lo<j) quicksort(a, lo, j); if (i<hi) quicksort(a, i, hi); }
Ejemplo sencillo de QuickSort Supongamos tenemos un arreglo con una serie de números desordenados y queremos ordenar por el método de Quicksort: [7,8,14,12,2,1,3,21]
Seleccionamos un pivot, por ejemplo el 12 [7,8,14,12,2,1,3,21] Pivot = 12 Ahora movemos todos los menores al pivot a la izquierda del pivot y los mayores a la derecha del pivot
[7,8,14,12,2,1,3,21]   Original [7,8,2,1,3,12,14,21] Los menores al pivot a la izquierda Los mayores al pivot a la derecha
[7,8,2,1,3,12,14,21]  El 12 ya está ordenado
[7,8,2,1,3,12,14,21]  Ahora tenemos dos sub-arreglos de números, por un lado los que están a la izquierda del pivot y por otro los que están a la derecha.
[7,8,2,1,3,12,14,21]  Consideramos el sub-arreglo de la izquierda: [7,8,2,1,3,12,14,21]  Seleccionamos un nuevo pivot para el nuevo sub-arreglo de la izquierda.
[7,8,2,1,3,12,14,21]  Seleccionamos el pivot del sub-arreglo Pivot= 2 [7,8,2,1,3,12,14,21]
[7,8,2,1,3,12,14,21]  Nuevamente movemos los menores al pivot a su izquierda y los mayores a su derecha. [7,8,2,1,3,12,14,21]  [1,2,3,7,8,12,14,21]
[1,3,2,7,8,12,14,21]  El 2 ya está ordenado al igual que el 12 [1,3,2,7,8,12,14,21] Cuidado: el 1,3,7,8,14,21 aún no están ordenados
Se repite recursivamente hasta tener todos ordenados  [1,2,3,7,8,12,14,21]
Estructura de Datos en Java, Mark Allen Weiss. A practicalIntroductionto data structures and algorithmanalysys. Java Edition. Clifford A. Shaffer. Introductionto Algorithm.2nd edition. Cormen, Leiserson, Rivest & Stein. Estructura de datos y algoritmos. Aho, HopCroft & Ullman. Algoritmos y estructura de datos. NiklausWirth. Estructura de datos y algoritmos. Mark Allen Weiss. La práctica de la programación. Brian Kernighan & Rob Pike. TheAlgorithmDesign Manual by Steve Skiena AlgorithmDesignby Jon Kleinberg and Éva Tardos IntroductiontotheDesign and Analysis of Algorithms (2nd Edition)

Más contenido relacionado

La actualidad más candente

Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
Fernando Solis
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
Angie Suarez
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busqueda
Walter Navarrete Pino
 

La actualidad más candente (20)

Quicksort
QuicksortQuicksort
Quicksort
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Ordenamiento por insercion
Ordenamiento por insercionOrdenamiento por insercion
Ordenamiento por insercion
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
arboles avl con codigo en java
arboles avl con codigo en javaarboles avl con codigo en java
arboles avl con codigo en java
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busqueda
 
Shell exposición
Shell exposiciónShell exposición
Shell exposición
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura lineales
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
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
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 

Similar a Quicksort

Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)
Linio Colquehuanca Rodrigo
 
Quick Sort
Quick SortQuick Sort
Quick Sort
jo0eel
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
Daniel Guaycha
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
lichic
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
Monica Canaza
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
Maiky Kobatakane
 
Animacion de algortimos de busquedas
Animacion de algortimos de busquedasAnimacion de algortimos de busquedas
Animacion de algortimos de busquedas
Carlostheran
 
14 Ordenacion
14 Ordenacion14 Ordenacion
14 Ordenacion
UVM
 

Similar a Quicksort (20)

Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
Quicksort
QuicksortQuicksort
Quicksort
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
Inge no lo hicimos
Inge no lo hicimosInge no lo hicimos
Inge no lo hicimos
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Animacion de algortimos de busquedas
Animacion de algortimos de busquedasAnimacion de algortimos de busquedas
Animacion de algortimos de busquedas
 
Metodos de ordenamiento 2
Metodos de ordenamiento 2Metodos de ordenamiento 2
Metodos de ordenamiento 2
 
Presentación problema metodo gauss
Presentación problema metodo gaussPresentación problema metodo gauss
Presentación problema metodo gauss
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
14 Ordenacion
14 Ordenacion14 Ordenacion
14 Ordenacion
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datos
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (14)

infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 

Quicksort

  • 1. Introducción al algoritmo de ordenación QuickSort José Pino
  • 2. Quicksort El mejor algoritmo de ordenación conocido actualmente (el más eficiente). Basado en la técnica divide y vencerás. O(nlogn)
  • 3. Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivot. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada. La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados. menorespivotmayores
  • 4. voidquicksort (int[] a, int lo, inthi) { inti=lo, j=hi, h; intx=a[(lo+hi)/2]; do { while (a[i]<x) i++; while (a[j]>x) j--; if (i<=j) { h=a[i]; a[i]=a[j]; a[j]=h; i++; j--; } } while (i<=j); if(lo<j) quicksort(a, lo, j); if (i<hi) quicksort(a, i, hi); }
  • 5. Ejemplo sencillo de QuickSort Supongamos tenemos un arreglo con una serie de números desordenados y queremos ordenar por el método de Quicksort: [7,8,14,12,2,1,3,21]
  • 6. Seleccionamos un pivot, por ejemplo el 12 [7,8,14,12,2,1,3,21] Pivot = 12 Ahora movemos todos los menores al pivot a la izquierda del pivot y los mayores a la derecha del pivot
  • 7. [7,8,14,12,2,1,3,21] Original [7,8,2,1,3,12,14,21] Los menores al pivot a la izquierda Los mayores al pivot a la derecha
  • 8. [7,8,2,1,3,12,14,21] El 12 ya está ordenado
  • 9. [7,8,2,1,3,12,14,21] Ahora tenemos dos sub-arreglos de números, por un lado los que están a la izquierda del pivot y por otro los que están a la derecha.
  • 10. [7,8,2,1,3,12,14,21] Consideramos el sub-arreglo de la izquierda: [7,8,2,1,3,12,14,21] Seleccionamos un nuevo pivot para el nuevo sub-arreglo de la izquierda.
  • 11. [7,8,2,1,3,12,14,21] Seleccionamos el pivot del sub-arreglo Pivot= 2 [7,8,2,1,3,12,14,21]
  • 12. [7,8,2,1,3,12,14,21] Nuevamente movemos los menores al pivot a su izquierda y los mayores a su derecha. [7,8,2,1,3,12,14,21] [1,2,3,7,8,12,14,21]
  • 13. [1,3,2,7,8,12,14,21] El 2 ya está ordenado al igual que el 12 [1,3,2,7,8,12,14,21] Cuidado: el 1,3,7,8,14,21 aún no están ordenados
  • 14. Se repite recursivamente hasta tener todos ordenados [1,2,3,7,8,12,14,21]
  • 15. Estructura de Datos en Java, Mark Allen Weiss. A practicalIntroductionto data structures and algorithmanalysys. Java Edition. Clifford A. Shaffer. Introductionto Algorithm.2nd edition. Cormen, Leiserson, Rivest & Stein. Estructura de datos y algoritmos. Aho, HopCroft & Ullman. Algoritmos y estructura de datos. NiklausWirth. Estructura de datos y algoritmos. Mark Allen Weiss. La práctica de la programación. Brian Kernighan & Rob Pike. TheAlgorithmDesign Manual by Steve Skiena AlgorithmDesignby Jon Kleinberg and Éva Tardos IntroductiontotheDesign and Analysis of Algorithms (2nd Edition)