... /** crea e restituisce una copia dell'array passato come parametro */ public static int[] copia(int[] a) { int n = a.length; int[] nuovoArray = new int[n]; for(int i = 0; i < n; i++) { nuovoArray[i] = a[i]; } return nuovoArray; } public static boolean ugualiFor(int[] a, int[] b) { int n = a.length; if(n != b.length) return false; else { for(int i = 0; i < n; i++) { if(a[i] != b[i]) return false; } return true; } } public static boolean ugualiForBrutto(int[] a, int[] b) { int n = a.length; if(n != b.length) return false; for(int i = 0; i < n; i++) if(a[i] != b[i]) return false; return true; } public static boolean uguali(int[] a, int[] b) { int n = a.length; if(n != b.length) return false; else { int i = 0; while(i<n && a[i] == b[i]) i++; return i==n; } } public static boolean uguali2(int[] a, int[] b) { int n = a.length; if(n != b.length) return false; int i = 0; while(i<n && a[i] == b[i]) i++; return i==n; } /** ricerca sequenziale in un array */ /** ricerca sequenziale in un array, con restituzione di un valore booleano, realizzata con il for */ public static boolean ricercaFor(int x, int[] a) { int n = a.length; for(int i=0; i < n; i++) { if(a[i] == x) return true; } return false; } public static boolean ricercaForTiger(int x, int[] a) { for(int elemento:a) { if(elemento == x) return true; } return false; } /** ricerca sequenziale in un array, realizzata con un while; procedura errata: perché? */ public static boolean ricercaErrata(int x, int[] a) { int i = 0; int n = a.length; while(i < n && a[i] != x) i++; return a[i] == x; } /** NUOVO! ricerca sequenziale realizzata con un while; procedura corretta: perché? (Attenzione: la ragione e' sottile ...) */ public static boolean ricerca1(int x, int[] a) { int i = 0; int n = a.length; while(i < n-1 && a[i] != x) i++; return a[i] == x; } /** ricerca sequenziale realizzata con un while; altra procedura errata: perché? */ public static boolean ricercaErrata2(int x, int[] a) { int i = 0; int n = a.length; while(a[i] != x && i < n) i++; return i < n; } /** ricerca sequenziale realizzata con un while; procedura corretta: perché? */ public static boolean ricerca(int x, int[] a) { int i = 0; int n = a.length; while(i < n && a[i] != x) i++; return i < n; } /** ricerca sequenziale con restituzione dell'indice, realizzata con un while; */ public static int ricercaIndice(int val, int[] a) { int i = 0; int n = a.length; while(i < n && a[i] != val) i++; //if(i < n) return i; else return -1; return i < n ? i : -1; scrittura alternativa } /** ricerca sequenziale in un array, con restituzione dell'indice; se il valore cercato non c'è, restituisce -1 */ public static int ricercaIndiceFor(int x, int[] a) { int n = a.length; for(int i=0; i < n; i++) { if(a[i] == x) return i; } return -1; } /** restituisce il numero degli elementi dell'array che sono uguali a x */ public static int quantiUgualiA(int x, int[] a) { int n = a.length; int conta = 0; for(int i = 0; i < n; i++) { if(a[i] == x) conta++; } return conta; } public static int quantiUgualiATiger(int x, int[] a) { int conta = 0; for(int elemento: a) { if(elemento == x) conta++; } return conta; } ...