import java.util.Arrays; import java.security.SecureRandom; public class Search { public static void main(String[] args) { int [] array = {23, 45 , 89, 34, 12, 45, 24, 59, 81}; System.out.println("\nArray iniziale:"); System.out.println(Arrays.toString(array)); System.out.println("Ricerca sequenziale di 12, indice: " + ricercaSequenziale(array, 12)); System.out.println("Ricerca sequenziale di 13, indice: " + ricercaSequenziale(array, 13)); Sort.selectionSort(array); System.out.println("\nArray ordinato:"); System.out.println(Arrays.toString(array)); System.out.println("Ricerca binaria di 34, indice: " + ricercaBinaria(array, 34)); System.out.println("Ricerca binaria di 25, indice: " + ricercaBinaria(array, 25)); System.out.println(); } /* Ricerca l'indice dell'array in cui compare valore, * se ci sono piĆ¹ indici, ne ritorna uno * se non ci sono indici, ritorna -1. */ public static int ricercaSequenziale(int [] array, int valore) { for (int i = array.length - 1; i > -1; i--) if (array[i] == valore) return i; return -1; } /* Ricerca di valore in un array ordinato * ritorna un indice in cui compare valore, * se non esiste ritorna -1. * Ad ogni iterazione cosidera la dimensione mediana, * se non trova il valore, riduce l'array di conseguenza. */ public static int ricercaBinaria(int [] array, int valore) { int inf = 0; int sup = array.length - 1; int med; do { med = (sup + inf) / 2; if (array[med] == valore) return med; if (valore < array[med]) sup = med - 1; else inf = med + 1; } while (inf <= sup); return -1; } }