Aggiunta ricerca sequenziale e binaria

Classe Research con test
This commit is contained in:
2023-04-12 22:10:15 +02:00
parent 76b1f794a4
commit ea5a4f50c9
14 changed files with 2111 additions and 0 deletions

View File

@ -0,0 +1,40 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
*/
package research;
/**
*
* @author gicorada
*/
public class Research {
public static <T extends Comparable> int sequenziale(T oggetto, T[] array) {
for(int i = 0; i < array.length; i++) {
if(oggetto.compareTo(array[i]) == 0) return i;
}
return -1;
}
public static <T extends Comparable> int binario(T oggetto, T[] array) {
int primo = 0; //Primo elemento della parte selezionata
int ultimo = array.length - 1; //Ultimo elemento della parte selezionata
int medio; //Elemento centrale, idealmente l'elemento cercato
while(primo <= ultimo) {
medio = (primo + ultimo) / 2;
T ogMedio = array[medio];
if(oggetto.compareTo(ogMedio) < 0) ultimo = medio -1;
else {
if(oggetto.compareTo(ogMedio) > 0) {
primo = medio + 1;
}
else return medio;
}
}
return -1;
}
}

View File

@ -0,0 +1,29 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package research;
/**
*
* @author gicorada
*/
public class Tester {
public static void main(String[] args) {
int dim = 500000;
Integer[] lista = new Integer[dim];
for (int i = 0; i < dim; i++) {
lista[i] = i;
}
for (int i = 0; i < dim; i++) {
if(Research.sequenziale(i, lista) != Research.binario(i, lista)) {
System.out.println("ERRORE CON " + i);
}
if(i % 10000 == 0) System.out.println("Arrivato a " + i);
}
}
}