Buonasera a tutti. Sto realizzando un algoritmo che mi restituisca il tempo di esecuzione di alcuni algoritmi di ordinamento. In C sembra andare bene, sto usando il flag di ottimizzazione -O3 e ottengo ad esempio questi valori:
ISORT (Insertion sort)
per array di dimensione 5000 tempo = 16.09ms
un un array quasi ordinato tempo = 0.01ms
SSORT (Selection sort)
array di 5000 elementi tempo = 43.05ms
array quasi ordinato tempo = 35.01
Mentra in java ottengo valori più o meno simili per l'isort mentre per il selection sort ottengo tempi stranissimi intorno ai 6000ms. Questo tempo in più dipende dal fatto che java carica on demand le classi in cui sono presenti i metodi da richiamare in parole povere, e quindi su consiglio di altri ho messo all'inizio un ciclo che richiama tutti gli algoritmi almeno 2 volte per ordinare un array, in modo da far iniziare poi il calcolo del tempo in maniera più pulita possibile.
Ma niente solo per il selection sort mi da tempi strani:
questo è il codice in java :
Dove sbaglio ?codice:public static void ssort(int[] a) { int i, j, n = a.length; for (i = 0; i < n-1; i++) { int iMin = i; for (j = i+1; j < n; j++) if (a[j] < a[iMin]) iMin = j; scambia(a, i, iMin); }

Rispondi quotando