si scusa.. allora... il codice compila correttamente... parte... non va in loop infinito ne nulla... semplicemente non trova l'elemento.... le 2 parti di codice li ho presi dalle 2 ricerche che ho implementato precedentemente e che funzionano.... ecco i codici:
Ricerca binaria:
codice:
int ricercaBinariaIterativa(int v[], int n, int x){
int primo = 0;
int ultimo = n - 1;
while(primo <= ultimo){
int m = (primo + ultimo) / 2;
if (v[m] == x) return m; // elemento trovato!
if(v[m] < x)
primo = m + 1;
else
ultimo = m - 1;
}
return -1;
}
Ricerca Interpolata:
codice:
int ricercaInterpolata(int v[], int n, int x){
int primo = 0;
int ultimo = n - 1;
while((v[ultimo] >= x) && (v[primo] < x)){
int m = primo + ((ultimo - primo) * ((x - v[primo]) / (v[ultimo] - v[primo])));
if (v[m] < x) primo = m + 1;
else if(v[m] > x) ultimo = m - 1;
else primo = m;
}
if(v[primo] == x) return primo;
else return -1;
}