Quicksort en C: ejercicio resuelto con particion de Lomuto

  2 minutos

Si buscas quicksort en C ejercicio resuelto, este ejemplo implementa la versión clásica con particion de Lomuto.

Ordena un array de enteros con quicksort y muestra el resultado final.

#include <stdio.h>

int particion(int a[], int l, int r) {
    int piv = a[r];
    int i = l - 1;

    for (int j = l; j < r; j++) {
        if (a[j] <= piv) {
            i++;
            int tmp = a[i]; a[i] = a[j]; a[j] = tmp;
        }
    }

    int tmp = a[i + 1]; a[i + 1] = a[r]; a[r] = tmp;
    return i + 1;
}

void quicksort(int a[], int l, int r) {
    if (l < r) {
        int p = particion(a, l, r);
        quicksort(a, l, p - 1);
        quicksort(a, p + 1, r);
    }
}

int main(void) {
    int a[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(a) / sizeof(a[0]);

    quicksort(a, 0, n - 1);
    for (int i = 0; i < n; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}
1 5 7 8 9 10
  • Promedio: O(n log n)
  • Peor caso: O(n^2)
  • Elegir mal limites en recursión (p - 1, p + 1).
  • No controlar pivot en arrays casi ordenados.
  • Confundir particion de Lomuto y Hoare.

La idea de quicksort aparece en motores de ordenacion, ranking y preprocesado de datos para consultas rápidas.

Si quieres una ruta completa con progresión real de dificultad:

Sí. Trabaja patrones que aparecen mucho en prácticas, entrevistas técnicas y evaluaciones de programación en C.

En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.

Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.