Ieri sera mi sono messo a cercare un po per vedere di capire come funziona ed applicare la ricerca binaria, ho tentato per primo di capire quella spiegata nel libro "Corso completi di Programmazione C" dei fratelli Deitel, ma onestamente, sarà stata l'ora, ma il fatto è che non ci ho capito un bel niente, ho capito al primo colpo più quello che ha detto Guglielmo che l'esempio del libro, poi ricercando sul web, ho trovato un bell'esempio in C, ma spiegato pochino e nemmeno qui, ho potuto capire come fare per applicarlo al mio caso, ma almeno qui, ho capito di più come funziona, ma non abbastanza da poterlo implementare, mi potete dare un'indizio?
//RICERCA BINARIA IN ARRAY (mia aggiunta)
//--programma e commenti originali------------------------------------------
// lista[]: lista dei valori interi in cui cercare
// n: valore intero contatore di elementi della lista
// x: valore intero da ricercare
int ricercaBinariaNonRicorsiva(int lista[], int n, int x)
{
int p, u, m;
p = 0;
u = n - 1;
if (u < 0)
return -1;
while(p <= u) {
m = (p + u) / 2;
if(lista[m] == x)
return m; // valore x trovato alla posizione m
if(lista[m] < x)
p = m + 1;
else
u = m - 1;
}
// se il programma arriva a questo punto vuol dire che
// il valore x non è presente in lista, ma se ci fosse
// dovrebbe trovarsi alla posizione p (nota che qui p > u)
return -1;
}
//--fine codice originale--------------
//--codice aggiunto per testarlo in IDE arduino-----
void setup(){
Serial.begin(9600);
}
void loop(){
}
PS. forse alla base della mia problematica sta il fatto che ancora non domino il passaggio di variabili tra funzioni, e qui si vede che funziona così... Devo studiare un pò meglio questo...