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

Ricerca sequenziale

Precedente
SUPERIORE
Successiva

Posizione

Posizione di un valore k all'interno di un array v

static int posizione1(double[] v, double k)
{
   int risp=-1;

   for(int i=0; i < v.length; i++)
      if(v[i] == k)
         risp=i;

   return risp;
}

Purtroppo restituisce la posizione dell'ultimo valore presente...

Ricerca sequenziale

Posizione di un elemento (la prima...)

static int posizione2(double[] v, double k)
{
   for(int i=0; i < v.length; i++)
      if(v[i] == k)
         return i;

   return -1;
}

oppure, trasformando il for() in while()...

static int posizione3(double[] v, double k)
{
   int risp=-1;

   int i=0;
   while(i < v.length && risp == -1)
   {
      if(v[i] == k)
         risp=i;
      i++;
   }

   return risp;
}

La ricerca sequenziale effettua una scansione dell'array finché non trova il valore richiesto, se presente, o l'array finisce.

Si può semplificare il blocco while()

static int posizione4(double[] v, double k)
{
   int i=0;
   while(i < v.length && v[i] != k)
      i++;

   if(i == v.length)
      return -1;
   else
      return i;
}

Se l'array è ordinato e l'elemento non compare la ricerca sequenziale può essere interrotta se l'elemento esaminato è maggiore di quello cercato

static int posizione5(double[] v, double k)
{
   int i=0;
   while(i < v.length && v[i] < k)
      i++;

   if(i == v.length || v[i] > k)
      return -1;
   else
      return i;
}

Ricerca sequenziale - ApPuNtIdIuNiNfOrMaTiCo

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

Precedente
SUPERIORE
Successiva