Algoritmos en Python

Quick Sort in Python

Pick a pivot, split the list into smaller, equal and larger parts, and sort each part the same way.

  • Intermedio
  • 2 min de lectura
  • 1 ejemplo ejecutable
Lo que aprenderás
  • Choosing a pivot
  • Partitioning with list comprehensions
  • Average O(n log n) versus worst-case O(n²)
Pivot 9 (the middle value) in [10, 7, 8, 9, 1, 5]
lower
[7, 8, 1, 5]
  • sort again
equal
[9]
  • already in place
higher
[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

  1. This version takes the middle value as the pivot.
  2. Three comprehensions build the lower, equal and higher lists.
  3. Recursively sort lower and higher, then join: lower + equal + higher.
  4. 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

Ejecutar código →
main.py
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]))
Obtén un botón Run para este ejemplo

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.

  1. Prueba con una lista vacía, una lista de un solo elemento y una lista con repetidos.
  2. Muestra el estado después de cada paso para ver el algoritmo en acción.
  3. Mide el tiempo de ejecución con 100, 1.000 y 10.000 elementos y compáralo con otra solución.
Ejecutar en el compilador de Python →

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