|
PosizionePosizione 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 sequenzialePosizione 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;
} |
|