UTNianos

Versión completa: Busqueda por interpolacion
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola , quisiera si alguien me puede dar una mano con este tema , tengo que armar un programa para buscar en un arreglo
algun valor , por el metodo de interpolacion , google , pero no encuentro nada entendible jaja , saludos !
Medio vago el enunciado.

Con interpolación no "buscás", sino que "generás" puntos intermedios entre puntos discretos. Si te piden que uses un array (o "arreglo") unidimensional, supongo que la idea sería modelar una función univariable con un delta constante.

¿No te dijeron que algoritmo de interpolación tenes que implementar? ¿Lineal? ¿Polinomial?
no lo tengo que desarrollar yo , que es parecido a la busqueda binaria y nada mas , una formula y a pensar.pero si es lineal .

aver esto tengo de codigo .

#include <stdio.h>
#include <stdlib.h>
#define N 10
#include <time.h>

int interpolacion (int arr[N],int clave);
int leerClave ();

void imprimirArreglo(int arr[N])
{
int i;
printf("
Arreglo
");
for(i=0;i<N;i++)
printf("arr[%d]=%d
",i,arr[i]);
printf("
");
}

int leerClave ()
{
int clave;

printf ("Ingrese la clave : ");
scanf ("%d",&clave);
printf ("
");

return clave;

}

int interpolacion (int arr[N], int clave)
{
int low=0;
int high=N;

int medio=0;



while (low<=high)
{


medio =(clave-arr[low])*((high-low)/(arr[high]-arr[low]));

if(clave>arr[medio])
low=medio+1;
else
if(clave<arr[medio])
high=medio-1;
else
low=medio;
}

if (arr[low]==clave)

return low;

}



int main()
{

int i;
int clave;

srand(time(NULL));

int arr[N]={0};

for (i=0;i<N;i++)
{
arr[i]=rand()%10;
}



imprimirArreglo(arr);
leerClave();
interpolacion(arr,clave);


return 0;
}
Ahhh, si, es como búsqueda binaria pero incrementas/decrementas en 1 en lugar de "partir a la mitad". Al igual que búsqueda binaria, el array tiene que estar ordenado.

Con "lineal" me refería a otra cosa (entendí cualquier cosa).

El código parce estar bien.
Osea que el array tiene q estar ordenado onda arr[N]={ 1 , 2 , 3 , .....}; jaja q boludo yo lo hacia con numeros aleatorios. Gracias !
URLs de referencia