SlideShare a Scribd company logo
1 of 41
Métodos de Ordenamiento
Metodo
Quicksort
Historia
 El ordenamiento rápido (quicksort en
inglés) es un algoritmo creado por el
científico británico en computación
Charles Anthony Richard Hoare
(Colombo, Sri Lanka, 11 de enero de
1934). Hoare basado en la técnica de
divide y vencerás, que permite, en
promedio, ordenar n elementos en un
tiempo proporcional a n log n.
¿En que consiste?
El método Quiscksort en pocas
palabras consiste en tomar un punto
de referencia, al que se le llama
pivote, e ir verificando dato a dato por
los dos extremos del arreglo con el
uso de dos punteros, un izquierdo y
un derecho para comprobar si el valor
verificado es mas grande o mas
pequeño que nuestro pivote e ir
intercambiando los valores en caso de
ser necesario.
Algoritmo
 Elegir un elemento de la lista de elementos a
ordenar, al que llamaremos pivote.
 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.
 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.
 En el peor caso, el pivote termina en un
extremo de la lista. El orden de
complejidad del algoritmo es entonces
de O(n²). El peor caso dependerá de la
implementación del algoritmo, aunque
habitualmente ocurre en listas que se
encuentran ordenadas, o casi
ordenadas. Pero principalmente
depende del pivote, si por ejemplo el
algoritmo implementado toma como
pivote siempre el primer elemento del
array, y el array que le pasamos está
ordenado, siempre va a generar a su
izquierda un array vacío, lo que es
ineficiente.
 En el caso promedio, el orden es O(n•log
n).
¿Cómo funciona?
Supongamos que este es nuestro
arreglo de datos
4 5 2 3 6 1
Ahora colocaremos los dos punteros y
el pivote
4 5 2 3 6 1
I D
Pivote
Nuestro pivote es el primer dato de la
izquierda
4
5 2 3 6 1
I D
pivote
El espacio vacio de la Izquierda es donde
podríamos realizar el intercambio,
comenzaremos a verificar los datos por la
Derecha
4
5 2 3 6 1
I D
Aquí
quedo un
espacio
vacio
Los datos menores que 4 irán al lado
izquierdo y los mayores que 4 irán al
lado derecho
4
5 2 3 6 1
I D
Aquí
quedo un
espacio
vacio
MAYORE
S
MENORE
S
Comenzamos…
4
5 2 3 6 1
I D
Aquí
quedo un
espacio
vacio
¿1>4?
Intercambio
4
5 2 3 61
I D
Aquí
quedo un
espacio
vacio
Recorrer
Verificar del lado izquierdo
4
5 2 3 61
I
D
Aquí
quedo un
espacio
vacio
¿5>4?
Intercambio…
4
52 3 61
I
D
Aquí
quedo un
espacio
vacio
Recorrer
Verificar el lado derecho
4
52 3 61
I
D
Aquí
quedo un
espacio
vacio
¿6>4
?
Verificar el lado derecho
4
52 3 61
I
D
Aquí
quedo un
espacio
vacio
¿6>4
?6 es mayor que 4 y ya esta en
Lugar correspondiente, lo que
Corresponde hacer es recorrer
Nuevamente el puntero derecho
Recorrer
Verificar el lado derecho
4
52 3 61
I D
Aquí
quedo un
espacio
vacio
¿3>4
?
Intercambiar y recorrer…
4
523 61
I D
Aquí
quedo un
espacio
vacio
Recorrer
Recorrer…
4
523 61
I D
Aquí
quedo un
espacio
vacio
El 2 ya es menor
Que el 4, se queda en esa
Posición.
Recorrer
Se han juntado los punteros!
4 523 61
I
D
El 4 ha encontrado su lugar!
El 4 ya esta ordenado, los valores menores
Que 4 están a su lado izquierdo y los
Mayores al derecho
Análisis de la situación
4 523 61
Tenemos dos arreglos resultantes con los que debemos
Realizar el mismo procedimiento cada uno con sus
Respectivos punteros izquierdo y derecho…
Arreglo A
Arreglo B
I D I D
Es un buen momento para mencionar que este método es Recursivo. En esta p
Es donde la recursividad se hace presente, invocándose el mismo algoritmo an
Visto, ahora para Arreglo A y nuevamente para Arreglo B.
Hay que realizar el mismo
procedimiento (esta vez de una
manera mas breve)
4 523 6
1
I D
4 523 6
1
I D
4 523 6
1
I
D
Los datos quedaron exactamente
igual porque 1 ya
esta en su posición correspondiente
4 523 61
I D
Análisis de la situación…
I D
Arreglo A Arreglo B
4 523 61
I D
Repetir proceso
4 52
3
61
I D
Repetir proceso
4 5
2
3
61
I D
Repetir proceso
4 5
2 3
61
I
D
El arreglo A
Ha quedado
Ordenado
correctamente
Arreglo A Arreglo B
Aun hay que realizar
El proceso para Arreglo B
4 5
2 3
61
I D
Repetir proceso…
4 5
2 3
6
1
I D
Repetir proceso…
4 52 3
6
1
I
D
Repetir proceso…
4 52 3 61
I
D
Éxito!
Nuestros datos ya están ordenados
Correctamente con el método
Quicksort!
Código Java…
Nuestra clase Quicksort
contiene:Este método simplemente hace que nuestro
Arreglo original sea igual a el nuevo, ya ordenado
Pero nos envía a quicksort1…
quicksort1
Este método solo nos manda a quicksort2 con
Instrucciones un poco mas especificas, punteros y el arreglo.
quicksort2
Aquí se desarrolla por completo el
algoritmo Quicksort para ordenamiento
de datos, y por lo tanto se pone un poco
complicado…
Ya ordenados los datos el control vuelve a main
Esto fue Método de
Ordenamiento Quicksort
Gracias por su
atención…
Rodolfo Delgado
González
Instituto Tecnológico de Ciudad
Juárez

More Related Content

What's hot

Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
edopaz
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
Boris Salleg
 
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
linkinpark03
 

What's hot (20)

Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Estructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no linealesEstructura de Datos - Estructuras no lineales
Estructura de Datos - Estructuras no lineales
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
COLAS
COLASCOLAS
COLAS
 
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
 
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
 
Presentacion Algoritmo heapsort
Presentacion Algoritmo heapsortPresentacion Algoritmo heapsort
Presentacion Algoritmo heapsort
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Ordenamiento por seleccion
Ordenamiento por seleccionOrdenamiento por seleccion
Ordenamiento por seleccion
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
 

Viewers also liked

Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
Patricia Correa
 
Metodo burbuja jenny v.
Metodo burbuja   jenny v.Metodo burbuja   jenny v.
Metodo burbuja jenny v.
jhosep2013
 
Cuadro comparativo quicksort
Cuadro comparativo quicksortCuadro comparativo quicksort
Cuadro comparativo quicksort
Patricia Correa
 
LA ENTREVISTA
LA ENTREVISTALA ENTREVISTA
LA ENTREVISTA
fecorgon
 

Viewers also liked (20)

Método de ordenamiento quicksort
Método de ordenamiento quicksortMétodo de ordenamiento quicksort
Método de ordenamiento quicksort
 
Quicksort
QuicksortQuicksort
Quicksort
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
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
 
Quick sort
Quick sortQuick sort
Quick sort
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
Busqueda
BusquedaBusqueda
Busqueda
 
Merge Sort
Merge SortMerge Sort
Merge Sort
 
Merge sort
Merge sortMerge sort
Merge sort
 
Como crear un merge (sobres y cartas personalizadas) por ljf 2012
Como crear un merge (sobres y cartas personalizadas) por ljf 2012Como crear un merge (sobres y cartas personalizadas) por ljf 2012
Como crear un merge (sobres y cartas personalizadas) por ljf 2012
 
Metodo burbuja jenny v.
Metodo burbuja   jenny v.Metodo burbuja   jenny v.
Metodo burbuja jenny v.
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Cuadro comparativo quicksort
Cuadro comparativo quicksortCuadro comparativo quicksort
Cuadro comparativo quicksort
 
Método de insercion
Método de insercionMétodo de insercion
Método de insercion
 
Ordenamiento parte 3
Ordenamiento parte 3Ordenamiento parte 3
Ordenamiento parte 3
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datos
 
LA ENTREVISTA
LA ENTREVISTALA ENTREVISTA
LA ENTREVISTA
 

Similar to Quicksort

Quick Sort
Quick SortQuick Sort
Quick Sort
jo0eel
 
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
 
Reny Galaviz y Jaime Marin Análisis de Algoritmo
Reny Galaviz y Jaime Marin Análisis de AlgoritmoReny Galaviz y Jaime Marin Análisis de Algoritmo
Reny Galaviz y Jaime Marin Análisis de Algoritmo
Reny-Galaviz
 
Reny galavs jaimemarin
Reny galavs jaimemarinReny galavs jaimemarin
Reny galavs jaimemarin
Reny-Galaviz
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
Daniel Guaycha
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
mishuhot
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
sirekarol
 

Similar to Quicksort (20)

Quick Sort
Quick SortQuick Sort
Quick Sort
 
Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)
 
Inge no lo hicimos
Inge no lo hicimosInge no lo hicimos
Inge no lo hicimos
 
Reny Galaviz y Jaime Marin Análisis de Algoritmo
Reny Galaviz y Jaime Marin Análisis de AlgoritmoReny Galaviz y Jaime Marin Análisis de Algoritmo
Reny Galaviz y Jaime Marin Análisis de Algoritmo
 
Reny galavs jaimemarin
Reny galavs jaimemarinReny galavs jaimemarin
Reny galavs jaimemarin
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDAMÉTODOS DE ORDENAMIENTO Y BUSQUEDA
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Josemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosJosemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodos
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
datos de ordenamiento
datos de ordenamientodatos de ordenamiento
datos de ordenamiento
 
Arreglos enitmar
Arreglos enitmarArreglos enitmar
Arreglos enitmar
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
 
Algoritmos ordenación.pptx
Algoritmos ordenación.pptxAlgoritmos ordenación.pptx
Algoritmos ordenación.pptx
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
02 uni1-estructuras de datos-arreglos
02 uni1-estructuras de datos-arreglos02 uni1-estructuras de datos-arreglos
02 uni1-estructuras de datos-arreglos
 

Quicksort

  • 2. Historia  El ordenamiento rápido (quicksort en inglés) es un algoritmo creado por el científico británico en computación Charles Anthony Richard Hoare (Colombo, Sri Lanka, 11 de enero de 1934). Hoare basado en la técnica de divide y vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.
  • 3. ¿En que consiste? El método Quiscksort en pocas palabras consiste en tomar un punto de referencia, al que se le llama pivote, e ir verificando dato a dato por los dos extremos del arreglo con el uso de dos punteros, un izquierdo y un derecho para comprobar si el valor verificado es mas grande o mas pequeño que nuestro pivote e ir intercambiando los valores en caso de ser necesario.
  • 4. Algoritmo  Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.  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.  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.
  • 5.  En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.  En el caso promedio, el orden es O(n•log n).
  • 6. ¿Cómo funciona? Supongamos que este es nuestro arreglo de datos 4 5 2 3 6 1
  • 7. Ahora colocaremos los dos punteros y el pivote 4 5 2 3 6 1 I D Pivote
  • 8. Nuestro pivote es el primer dato de la izquierda 4 5 2 3 6 1 I D pivote
  • 9. El espacio vacio de la Izquierda es donde podríamos realizar el intercambio, comenzaremos a verificar los datos por la Derecha 4 5 2 3 6 1 I D Aquí quedo un espacio vacio
  • 10. Los datos menores que 4 irán al lado izquierdo y los mayores que 4 irán al lado derecho 4 5 2 3 6 1 I D Aquí quedo un espacio vacio MAYORE S MENORE S
  • 11. Comenzamos… 4 5 2 3 6 1 I D Aquí quedo un espacio vacio ¿1>4?
  • 12. Intercambio 4 5 2 3 61 I D Aquí quedo un espacio vacio Recorrer
  • 13. Verificar del lado izquierdo 4 5 2 3 61 I D Aquí quedo un espacio vacio ¿5>4?
  • 14. Intercambio… 4 52 3 61 I D Aquí quedo un espacio vacio Recorrer
  • 15. Verificar el lado derecho 4 52 3 61 I D Aquí quedo un espacio vacio ¿6>4 ?
  • 16. Verificar el lado derecho 4 52 3 61 I D Aquí quedo un espacio vacio ¿6>4 ?6 es mayor que 4 y ya esta en Lugar correspondiente, lo que Corresponde hacer es recorrer Nuevamente el puntero derecho Recorrer
  • 17. Verificar el lado derecho 4 52 3 61 I D Aquí quedo un espacio vacio ¿3>4 ?
  • 18. Intercambiar y recorrer… 4 523 61 I D Aquí quedo un espacio vacio Recorrer
  • 19. Recorrer… 4 523 61 I D Aquí quedo un espacio vacio El 2 ya es menor Que el 4, se queda en esa Posición. Recorrer
  • 20. Se han juntado los punteros! 4 523 61 I D El 4 ha encontrado su lugar! El 4 ya esta ordenado, los valores menores Que 4 están a su lado izquierdo y los Mayores al derecho
  • 21. Análisis de la situación 4 523 61 Tenemos dos arreglos resultantes con los que debemos Realizar el mismo procedimiento cada uno con sus Respectivos punteros izquierdo y derecho… Arreglo A Arreglo B I D I D Es un buen momento para mencionar que este método es Recursivo. En esta p Es donde la recursividad se hace presente, invocándose el mismo algoritmo an Visto, ahora para Arreglo A y nuevamente para Arreglo B.
  • 22. Hay que realizar el mismo procedimiento (esta vez de una manera mas breve) 4 523 6 1 I D
  • 24. 4 523 6 1 I D Los datos quedaron exactamente igual porque 1 ya esta en su posición correspondiente
  • 25. 4 523 61 I D Análisis de la situación… I D Arreglo A Arreglo B
  • 26. 4 523 61 I D Repetir proceso
  • 29. 4 5 2 3 61 I D El arreglo A Ha quedado Ordenado correctamente Arreglo A Arreglo B Aun hay que realizar El proceso para Arreglo B
  • 30. 4 5 2 3 61 I D Repetir proceso…
  • 31. 4 5 2 3 6 1 I D Repetir proceso…
  • 33. 4 52 3 61 I D Éxito! Nuestros datos ya están ordenados Correctamente con el método Quicksort!
  • 35. Nuestra clase Quicksort contiene:Este método simplemente hace que nuestro Arreglo original sea igual a el nuevo, ya ordenado Pero nos envía a quicksort1…
  • 36. quicksort1 Este método solo nos manda a quicksort2 con Instrucciones un poco mas especificas, punteros y el arreglo.
  • 37. quicksort2 Aquí se desarrolla por completo el algoritmo Quicksort para ordenamiento de datos, y por lo tanto se pone un poco complicado…
  • 38.
  • 39. Ya ordenados los datos el control vuelve a main
  • 40.
  • 41. Esto fue Método de Ordenamiento Quicksort Gracias por su atención… Rodolfo Delgado González Instituto Tecnológico de Ciudad Juárez