La ricerca binaria si applica agli array ordinati.
Essa controlla se l'elemento richiesto si trova nella posizione centrale dell'array altrimenti concentra la ricerca nella parte
| BASSA se ha trovato un elemento MAGGIORE |
| ALTA se ha trovato un elemento MINORE |
finché
| non trova l'elemento oppure |
| rimane da esaminare un sottoarray vuoto. |
static int binaria1(double[] v, double k)
{
int risp=-1, inf=0,
sup=v.length-1,
medio;
while(inf <= sup && risp == -1)
{
medio=(inf+sup)/2;
if(v[medio] < k)
inf=medio+1;
else if(v[medio] == k)
risp=medio;
else
sup=medio-1;
}
return risp;
}
Utilizzando l'istruzione return due volte si può semplificare l'espressione logica del while(), fare a meno della variabile risp, ...
static int binaria2(double[] v, double k)
{
int inf=0,
sup=v.length-1,
medio;
while(inf <= sup)
{
medio=(inf+sup)/2;
if(v[medio] < k)
inf=medio+1;
else if(v[medio] == k)
return medio;
else
sup=medio-1;
}
return -1;
} |