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