Quicksort en C: ejercicio resuelto con particion de Lomuto

Quicksort en C: ejercicio resuelto

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

Enunciado

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

Solución en C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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;
}

Salida esperada

1
1 5 7 8 9 10

Complejidad

  • Promedio: O(n log n)
  • Peor caso: O(n^2)

Errores frecuentes

  • Elegir mal limites en recursión (p - 1, p + 1).
  • No controlar pivot en arrays casi ordenados.
  • Confundir particion de Lomuto y Hoare.

Aplicación práctica

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

Siguiente ejercicio recomendado

Práctica guiada y libro completo

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

FAQ

¿Este ejercicio sirve para entrevistas y exámenes de C?

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

¿Dónde seguir con más ejercicios resueltos de C?

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

¿Cómo practicar este tipo de ejercicio para mejorar más rápido?

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.