codice:
int ricercaAdattiva(int v[], int n, int x){
int primo = 0;
int ultimo = n - 1;
while(ultimo > primo){
int m = (ultimo + primo) / 2 + 1;
int prox = primo + ((ultimo - primo) * ((x - v[primo]) / (v[ultimo] - v[primo])));
if ((v[prox] > x) && (prox - primo < m)){
ultimo = prox - 1;
//prox = (primo + ultimo) / 2;
}
else if((v[prox] < x) && (ultimo - prox) < m) {
primo = prox + 1;
//prox = (primo + ultimo) / 2;
}
else if(v[prox] < x) primo = m + 1;
else if(v[prox] > x) ultimo = m - 1;
else primo = m;
}
if(v[primo] == x) return primo;
else if(v[ultimo] == x) return ultimo;
else return -1;
}
Uff... non riesco a corregere il codice.... Su google non trovo nulla forse ha un altro nome questa tipo di ricerca???
Sarebbe una ricerca mezza interpolata e mezza binaria (implementate tutte e due correttamente ma nel momento di metterle insieme... il casino) ....
Grazie per l'aiuto..