Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Ricerca binaria

Precedente
SUPERIORE
Successiva

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

bulletBASSA se ha trovato un elemento MAGGIORE
bulletALTA se ha trovato un elemento MINORE

finché

bulletnon trova l'elemento oppure
bulletrimane 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;
}

Ricerca binaria - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva