Oppgave 1
import java.util.*; public class Tabell { private Tabell() {} // hindrer instansiering public static void bytt(int[] a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static int[] randPerm(int n) { int[] a = new int[n]; // fyller tabellen med 1, 2, . . , n for (int i = 0; i < n; i++) a[i] = i+1; Random r = new Random(); // hentes fra java.util for (int k = n-1; k > 0; k--) { int i = r.nextInt(k+1); // tilfeldig tall fra [0,k] bytt(a,k,i); } return a; // tabellen med permutasjonen returneres } // randPerm public static void randPerm(int[] a) // stokker om a { Random r = new Random(); // hentes fra java.util for (int k = a.length-1; k > 0; k--) { int i = r.nextInt(k+1); // tilfeldig tall fra [0,k] bytt(a,k,i); } } public static int maks(int[] a, int fra, int til) { if (fra < 0 || til > a.length || fra >= til) throw new IllegalArgumentException("Illegalt intervall!"); int m = fra; // indeks til største verdi i a[fra:til> int maksverdi = a[fra]; // største verdi i a[fra:til> for (int i = fra + 1; i < til; i++) if (a[i] > maksverdi) { m = i; // indeks til største verdi oppdateres maksverdi = a[m]; // største verdi oppdateres } return m; // posisjonen til største verdi i a[fra:til> } public static int maks(int[] a) // bruker hele tabellen { return maks(a,0,a.length); // kaller metoden over } public static int min(int[] a, int fra, int til) { if (fra < 0 || til > a.length || fra >= til) throw new IllegalArgumentException("Illegalt intervall!"); int m = fra; // indeks til minste verdi i a[fra:til> int minverdi = a[fra]; // minste verdi i a[fra:til> for (int i = fra + 1; i < til; i++) if (a[i] < minverdi) { m = i; // indeks til minste verdi oppdateres minverdi = a[m]; // minste verdi oppdateres } return m; // posisjonen til minste verdi i a[fra:til> } public static int min(int[] a) // bruker hele tabellen { return min(a,0,a.length); // kaller metoden over } } // class Tabell
Oppgave 3
public static void bytt(char[] a, int i, int j) { char temp = a[i]; a[i] = a[j]; a[j] = temp; }
Oppgave 4
public static void skriv(int[] a, int fra, int til) { fratilKontroll(a.length, fra, til); if (til - fra > 0) System.out.print(a[fra]); for (int i = fra + 1; i < til; i++) System.out.print(" " + a[i]); } public static void skriv(int[] a) { skriv(a, 0, a.length); }
Oppgave 5
public static void skrivln(int[] a, int fra, int til) { skriv(a,fra,til); System.out.println(); } public static void skrivln(int[] a) { skrivln(a, 0, a.length); }
Oppgave 6
public static void skriv(char[] a, int fra, int til) { fratilKontroll(a.length, fra, til); if (til - fra > 0) System.out.print(a[fra]); for (int i = fra + 1; i < til; i++) System.out.print(" " + a[i]); } public static void skriv(char[] a) { skriv(a, 0, a.length); } public static void skrivln(char[] a, int fra, int til) { skriv(a,fra,til); System.out.println(); } public static void skrivln(char[] a) { skrivln(a, 0, a.length); }
Oppgave 7
public static int[] naturligeTall(int n) { if (n < 1) throw new IllegalArgumentException("n(" + n + ") er mindre enn 1!"); int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = i + 1; return a; } public static int[] heleTall(int fra, int til) { if (fra > til) throw new IllegalArgumentException("fra(" + fra + ") > til(" + til + ")"); int[] a = new int[til - fra]; for (int i = fra; i < til; i++) a[i-fra] = i; return a; }