Uff... non riesco a corregere il codice.... Su google non trovo nulla forse ha un altro nome questa tipo di ricerca???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; }
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..

Rispondi quotando