Quick Sort in Python
Pick a pivot, split the list into smaller, equal and larger parts, and sort each part the same way.
- Choosing a pivot
- Partitioning with list comprehensions
- Average O(n log n) versus worst-case O(n²)
[7, 8, 1, 5]
- sort again
[9]
- already in place
[10]
- one value: done
Partition around a pivot
El ordenamiento rápido (quick sort) elige un elemento como pivote y reparte el resto en dos grupos: los menores y los mayores que el pivote. Después, cada grupo se ordena con una llamada recursiva. En la práctica es uno de los algoritmos de ordenación más rápidos.
Puntos clave
- This version takes the middle value as the pivot.
- Three comprehensions build the lower, equal and higher lists.
- Recursively sort lower and higher, then join: lower + equal + higher.
- A pivot that always splits badly makes it
O(n²).
¿Cuándo se usa?
- Desarrollar tu forma de pensar y entender paso a paso cómo funciona un algoritmo.
- Elegir el enfoque adecuado cuando hay que procesar muchos datos o acelerar un programa.
- Prepararte para exámenes, ejercicios y entrevistas de programación.
Visualizador de El ordenamiento rápido (quick sort) en Python
O(n log n)Usa Reproducir o Paso para seguir cada comparación y movimiento de datos.
Código de ejemplo
def quick_sort(values):
if len(values) <= 1:
return values
pivot = values[len(values) // 2]
lower = [value for value in values if value < pivot]
equal = [value for value in values if value == pivot]
higher = [value for value in values if value > pivot]
return quick_sort(lower) + equal + quick_sort(higher)
print(quick_sort([10, 7, 8, 9, 1, 5]))
Resultado de la ejecución
[1, 5, 7, 8, 9, 10]
Explicación del código
Esta versión fácil de leer elige el elemento del medio como pivote y crea tres listas, lower, equal y higher, con comprensiones de listas. El resultado es la unión de quick_sort(lower), equal y quick_sort(higher). La complejidad media es O(n log n), pero con un pivote mal elegido el algoritmo puede llegar a O(n²).
Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.
Ejercicios de práctica
Prueba a modificar el código siguiendo las ideas de abajo. Cambiar el código y ver el resultado te ayudará a entender la lección mucho mejor que solo leerla.
- Prueba con una lista vacía, una lista de un solo elemento y una lista con repetidos.
- Muestra el estado después de cada paso para ver el algoritmo en acción.
- Mide el tiempo de ejecución con 100, 1.000 y 10.000 elementos y compáralo con otra solución.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos