Sorting Algorithms
Bubble, insertion, merge, quick & heap sort — compared and visualized
Sorting is the classic lens for learning algorithm analysis: every method produces the same ordered output, but the cost of getting there ranges from O(n²) to O(n log n). Watching them side by side makes the trade-offs concrete.
The simple O(n²) sorts
Bubble sort repeatedly swaps adjacent out-of-order pairs; selection sort repeatedly picks the smallest remaining element; insertion sort grows a sorted prefix one element at a time. All three are quadratic in the worst case, but insertion sort shines on small or nearly-sorted inputs, where it approaches O(n).
The divide-and-conquer sorts
Merge sort splits the array in half, sorts each half and merges them, guaranteeing O(n log n) at the cost of extra memory. Quicksort partitions around a pivot and recurses; it is usually the fastest in practice thanks to cache locality, but a poor pivot can degrade it to O(n²). Heap sort builds a binary heap and repeatedly extracts the max, sorting in place in O(n log n) with no extra memory.
Stability & in-place
Two properties decide which sort fits a job: stability (equal keys keep their original order — merge and insertion sort are stable; quick and heap sort are not) and whether the sort works in place (no significant extra memory — quick and heap sort do; merge sort does not). Step through each below to feel the difference.
Try it interactively
Visualizador de Bubble Sort
Simulación animada de bubble sort con controles paso a paso, velocidad ajustable, datos de entrada personalizados, contadores de comparaciones/intercambios en tiempo real y pseudocódigo. Se ejecuta completamente en tu navegador.
Abrir herramientaVisualizador de Insertion Sort
Insertion Sort animado con controles de reproducción paso a paso, velocidad ajustable, datos de entrada personalizados, contadores en vivo de comparaciones/escrituras y pseudocódigo. Se ejecuta completamente en tu navegador.
Abrir herramientaVisualizador de Selection Sort
Selection Sort animado con controles paso a paso, velocidad ajustable, entrada de datos personalizada, contadores de comparaciones/intercambios en vivo y pseudocódigo. Funciona completamente en tu navegador.
Abrir herramientaVisualizador de Merge Sort
Simulación animada de merge sort con controles paso a paso, velocidad ajustable, datos de entrada personalizados, contadores en vivo de comparaciones/escrituras y pseudocódigo. Funciona totalmente en el navegador.
Abrir herramientaVisualizador de Quick Sort
Quicksort animado con resaltado del pivote/particiones, control paso a paso, velocidad ajustable, entrada personalizada, contadores en vivo y pseudocódigo. Se ejecuta directamente en tu navegador.
Abrir herramientaVisualizador de Heap Sort
Visualización animada del algoritmo heap sort con control paso a paso, velocidad ajustable, datos de entrada personalizados, contadores de comparaciones/intercambios en tiempo real y pseudocódigo. Funciona directamente en el navegador.
Abrir herramientaPrefer a focused tool?
- Sort Visualizer → Watch sorting algorithms run, step by step
Preguntas frecuentes
¿Qué es heap sort?
Heap sort construye un max-heap a partir del arreglo y luego repite el proceso de intercambiar el elemento raíz (el mayor) con el último y aplicar sift-down para restaurar la propiedad de heap, ampliando progresivamente la zona ordenada desde el extremo derecho.
¿Cuál es la complejidad temporal de heap sort?
O(n log n) tanto en el mejor caso como en el promedio y el peor caso. Construir el heap toma O(n) y cada una de las n extracciones cuesta O(log n).
¿Es heap sort un algoritmo estable?
No. Las operaciones sobre el heap intercambian elementos que están alejados entre sí, lo que puede alterar el orden relativo de los valores iguales.
¿Cómo se compara heap sort con quicksort?
Heap sort garantiza una complejidad de O(n log n) en el peor caso y usa solo O(1) de memoria adicional, pero quicksort suele ser más rápido en la práctica gracias a una mejor localidad de caché y constantes más bajas.