Aggiunta ricerca sequenziale e binaria
Classe Research con test
This commit is contained in:
40
NetBeans Projects/Research/src/research/Research.java
Normal file
40
NetBeans Projects/Research/src/research/Research.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
29
NetBeans Projects/Research/src/research/Tester.java
Normal file
29
NetBeans Projects/Research/src/research/Tester.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user