Oppgave 1
public static int binærsøk(int[] a, int v, int h, int verdi) { if (v < 0 || h >= a.length) throw new IllegalArgumentException("Ulovlig intervall"); if (h < v) return -(v + 1); // tomt intervall else if (h == v) { if (verdi == a[v]) return v; else if (verdi < a[v]) return -(v + 1); else return -(v + 2); } else { int m = (v + h)/2; // finner midten if (verdi > a[m]) return binærsøk(a,m+1,h,verdi); else return binærsøk(a,v,m,verdi); } } public static int binærsøk(int[] a, int verdi) { return binærsøk(a,0,a.length-1,verdi); }
Oppgave 2
public static int lineærsøk(int[] a, int i, int verdi) { if (i == a.length) return -(i + 1); else if (a[i] == verdi) return i; else if (a[i] > verdi) return -(i + 1); else return lineærsøk(a,i+1,verdi); } public static int lineærsøk(int[] a, int verdi) { return lineærsøk(a,0,verdi); }