09/05/2010, 02:03
|
| | Fecha de Ingreso: febrero-2005
Mensajes: 17
Antigüedad: 19 años, 9 meses Puntos: 0 | |
Problema busqueda interpolacion Tengo mi algoritmo de interpolación pero se queda trabado cuando le doy un numero a buscar. Necesito ayuda a ver si le pueden hayar el error
Código:
int intersearch (int v[500000], int max, int num)
{
int izq, der, pos;
izq=1;
der=max;
while (v[der]>=num || v[izq]<num)
{
pos= izq+(num-v[izq])*(der-izq)/(v[der]-v[izq]);
if(num>v[pos])
izq=pos+1;
else
if(num<v[pos])
der=pos-1;
else
izq=pos;
}
if (v[izq]==num)
return izq;
else
return -1;
}
Mandado a llamar, lo demás aparte de la llamda está bien, está siendo probado con 30 archivos automaticamente y con otras 2 busquedas que funcionan.
Código:
case 3:
op2=menuarch();
printf("Numero a buscar en todas las pruebas: ");
scanf("%d ",&num);
printf("\nProcesando");
for(int i=1;i<=30;i++)
{
printf(".");
sprintf(root,"%d/%d",op2,i);
double secs;
LARGE_INTEGER t_ini, t_fin;
tam=llenavec(v,root);
quicksort(v,0,tam);
QueryPerformanceCounter(&t_ini);
pos[i]= intersearch(v,tam,num);
QueryPerformanceCounter(&t_fin);
time[i] = performancecounter_diff(&t_fin, &t_ini);
}
guardavecb(time,pos);
break;
|