Di nuovo qui, a chiedervi un suggerimento:-)
L'altro giorno mi avete aiutato a fare dei metodi per la ricerca binaria generica, ora per l'esercizio successivo devo 'cronometrare' i tempi del metodo iterativo e di quello ricorsivo.
Credo però che l'array sia troppo piccolo per mostrare dei tempi significativi, infatti esce sempre o quasi zero. Come posso creare un ciclo for che crei un array fino a che i tempi di ricerca si alzeranno? Ho anche dei dubbi che arrivi fino a 9999999, anche se stampo l'indice i e array.length mi dice che è 9999999, ma secondo me dovrebbe arrivare fino a 32000 e qualcosa, vero?
Il codice che ho scritto è il seguente:
codice:
public static void main(String []args)
{
Integer[] cerca = new Integer[10];
cerca[0]=10;
int indiceRis=0;
Integer[] array=new Integer[9999999];
//int i;
for(int i = 0 ; i < 9999999 ; i++)
{
array[i]=i;
//System.out.println(i);
}
//System.out.println("ii"+i);
OttoQuindici<Integer> OttoQuindici = new OttoQuindici<Integer>();
long inizioIterativo=System.currentTimeMillis();
indiceRis =OttoQuindici.binaria(array, cerca, Integer.class);
long fineIterativo=System.currentTimeMillis();
long tIterativo=fineIterativo-inizioIterativo;
long inizioRicorsivo=System.currentTimeMillis();
int indiceRis2 =-10;
indiceRis2=OttoQuindici.binRicorsiva(array, cerca, 0, array.length ,Integer.class);
long fineRicorsivo=System.currentTimeMillis();
long tRicorsivo=fineRicorsivo-inizioRicorsivo;
System.out.println("Inizio: "+inizioIterativo);
System.out.println("Fine : "+fineIterativo);
System.out.println("Tempo Iterativo: "+tIterativo);
System.out.println("Tempo Ricorsivo: "+tRicorsivo);
if(indiceRis!=-1)
System.out.println("Risultato:"+array[indiceRis2]);
else
System.out.println("Non trovato");
}
public int binRicorsiva(T[] elementi, T[] ricerca,int inferiore, int superiore ,Class<T> clazz)
{
int meta=(inferiore+superiore)/2;
System.out.println("hola");
if(inferiore>superiore)
return -1;
else if (elementi[meta] == ricerca[0])
return meta;
else if (ricerca[0].compareTo(elementi[meta])>0)
return binRicorsiva(elementi, ricerca, meta+1,superiore, clazz);
else if (ricerca[0].compareTo(elementi[meta])<0)
return binRicorsiva(elementi, ricerca, inferiore, meta-1, clazz);
return -1;
}