Introduktion
- Inlämningsdatum 31 aug 2022 av 18:00
- Poäng 2
- Lämnar in en filuppladdning
- Filtyper pdf
- Tillgänglig 29 aug 2022 kl 8:00–2 sep 2022 kl 23.59
En mjukstart för att se till så att man kan mäta tider och skriva en snygg rapport. Rapporten skall skrivas i LaTeX och det gör du antingen (rekommenderas) genom att installera LaTeX lokalt på din laptop, eller genom att använda Overleaf. Links to an external site. Fördelen men Overleaf är att kommer igång på fem minuter och att du ser vad resultatet blir hela tiden. Nackdelen är att du inte kan använda din egen editor och att det blir lite jobbigt när du skall uppdatera grafer mm.
Förslag på hur man kan lösa första uppgiften:
import java.util.Random; class Access { private static int access(int[] arr, int[] indx) { int loop = indx.length; int sum = 0; for (int i = 0; i < loop; i++) { sum += arr[indx[i]]; } return sum; } private static void time(int tries, int loop, int n) { Random rnd = new Random(); int[] indx = new int[loop]; for (int i = 0; i < loop ; i++) { indx[i] = rnd.nextInt(n); } int[] arr = new int[n]; for (int i = 0; i < n ; i++) { arr[i] = i; } double min = Double.POSITIVE_INFINITY; double max = 0; double sum = 0; for (int i = 0; i < tries; i++) { double n0 = System.nanoTime(); access(arr, indx); double n1 = System.nanoTime(); double t = (n1 - n0); if ( t < min ) min = t; if ( t > max ) max = t; sum += t; } System.out.printf("n: %6d \t min: %.2fns\t avg: %.2fns\t max: %.2fns\n", n, (min/(loop)), (sum/(tries*loop)), (max/(loop))); } public static void main(String[] arg) { int[] sizes = {200,400,800,1600,3200,6400,12800,25600}; for ( int n : sizes) { time(10000, 100000, n); } } }