Radix sort en C: ejercicio resuelto

Radix sort en C: ejercicio resuelto

Este ejercicio está programado para publicación diaria y sigue la estructura estándar del sitio: enunciado, solución y resultado esperado.

Enunciado

Resuelve el caso práctico y comprueba la salida por consola.

Solución en C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

void count_exp(int a[], int n, int exp) {
    int out[32], c[10] = {0};
    for (int i = 0; i < n; i++) c[(a[i]/exp)%10]++;
    for (int i = 1; i < 10; i++) c[i] += c[i-1];
    for (int i = n-1; i >= 0; i--) out[--c[(a[i]/exp)%10]] = a[i];
    for (int i = 0; i < n; i++) a[i] = out[i];
}

int main(void) {
    int a[] = {170,45,75,90,802,24,2,66};
    int n = (int)(sizeof(a)/sizeof(a[0]));
    for (int exp = 1; exp <= 100; exp *= 10) count_exp(a, n, exp);
    for (int i = 0; i < n; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}

Resultado esperado

1
2 24 45 66 75 90 170 802

Errores frecuentes

  • No validar retornos de funciones estándar.
  • Ignorar casos límite de índices, punteros o buffers.
  • No probar con entradas de ejemplo antes de publicar.

Aplicación práctica

Radix sort es ideal para ordenar enteros de longitud fija o cadenas de igual longitud, como fechas, DNIs o identificadores numéricos.

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.