Implementazioni di algoritmi/Ricerca dicotomica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
Riga 57:
 
===Implementazione in [[C]] versione non ricorsiva===
<source lang="c">
// lista l'array su cui effettuare la ricerca
 
// n numero elementi della lista
 
// x chiave da ricercare
 
// N.B.: questa implementazione è valida solo se la lista contiene dati numerci (int)
 
// per estenedere la ricerca ad altri tipi di dati occorre riportare alcune
 
// modifiche sui tipi di dati e sulle if di comparazione.
 
// buon lavoro!
 
int ricercaBinariaNonRicorsiva(int lista[], int n, int x)
<source lang="c">
{
int ricercaBinariaNonRicorsiva(int lista[], int n, int x)
int p,u,m;
{
p int= p,u,m0;
pu = 0n-1;
while(p<=u) = n-1;{
while m = (p<=+u) {/2;
if(lista[m ]==x) (p+u)/2;
return m; // valore x trovato alla posizione m
if(lista[m]==<x)
return m; // valore x trovato alla posizione m
if(lista[ p = m]<x)+1;
p = m+1;else
else u = m-1;
}
u = m-1;
// se il programma arriva a questo punto vuol dire che
}
// se il programmavalore arrivax anon questoè puntopresente vuolin direlista, ma se checi fosse
// dovrebbe trovarsi alla posizione u (nota che qui p==u)
// il valore x non è presente in lista, ma se ci fosse
return -1;
// dovrebbe trovarsi alla posizione u (nota che qui p==u)
}
return -1;
}
</source>