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; }

Rispondi quotando
