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
#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 5 7 8 9 10Complejidad
- 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
- Merge sort en C: ejercicio resuelto con divide y vencerás
- Búsqueda binaria en C: ejercicio resuelto en array ordenado
- Árbol binario en C: ejercicio resuelto de inserción y búsqueda
- Todos los ejercicios de C
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.