Búsqueda por interpolación en C: ejercicio resuelto

Búsqueda por interpolación 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>

int interpolation_search(int a[], int n, int x) {
    int lo = 0, hi = n - 1;
    while (lo <= hi && x >= a[lo] && x <= a[hi]) {
        if (lo == hi) return (a[lo] == x) ? lo : -1;
        int pos = lo + (int)((double)(hi - lo) / (a[hi] - a[lo]) * (x - a[lo]));
        if (a[pos] == x) return pos;
        if (a[pos] < x) lo = pos + 1; else hi = pos - 1;
    }
    return -1;
}

int main(void) {
    int a[] = {10,20,30,40,50,60};
    printf("Indice: %d\n", interpolation_search(a, 6, 40));
    return 0;
}

Resultado esperado

1
Indice: 3

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

La búsqueda por interpolación supera a la binaria en arrays de distribución uniforme, como bases de datos ordenadas por valor.

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.