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;