Oppgave 1
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 }
Oppgave 2
public static int maks(int[] a, int fra, int til) { int sist = til - 1; // siste posisjon i tabellen int m = fra; // indeks til største verdi int maksverdi = a[fra]; // største verdi int temp = a[sist]; // tar vare på siste verdi a[sist] = 0x7fffffff; // legger tallet 2147483647 sist for (int i = fra + 1; ; i++) // i starter med 1 if (a[i] >= maksverdi) // denne blir sann til slutt { if (i == sist) // sjekker om vi er ferdige { a[sist] = temp; // legger siste verdi tilbake return temp >= maksverdi ? sist : m; // er siste størst? } else { maksverdi = a[i]; // maksverdi oppdateres m = i; // m oppdateres } } } // maks
Oppgave 3
Kopitabellen får lengde to
− from
også hvis to
er for stor, men med ekstra «null»-verdier. Se flg. eksempel:
int[] a = {1,2,3,4,5}; int[] b = Arrays.copyOfRange(a, 0, 10); System.out.println(Arrays.toString(b)); // Utskrift: [1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
Oppgave 4
Metodene binarySearch
, compare
, compareUnsigned
,
copyOfRange
, equals
, fill
, mismatch
,
parallelPrefix
, parallelSort
og sort
.
På noen nye metoder har man innført parameternavnene startInclusive
og endExclusive
.
Oppgave 5
Den nye typen for-løkke kalles en for-alle-løkke
og den henter ett og ett element fra
en datastruktur som kompilatoren oppfatter
som Iterable
(itererbar). Inntil videre er det kun tabeller som er Iterable
for oss. Den lages slik:
for (Datatype x : a) <et eller annet gjøres med x>;
Bokstaven a står for navnet på en tabell og Datatype
er tabellens datatype, f.eks.
int
, double
, Integer
, String
. Programsetningen kan leses slik:
for alle x i a gjør
. . . . Variabelnavnet x er valgfritt. Du kan velge
et hvilket som helst navn så sant det ikke kommer i konflikt med andre navn.
I flg. eksempel skrives innholdet av en String
-tabell ut til konsollet:
String[] s = {"Ola","Per","Kari","Ali","Jasmin"}; for (String navn : s) System.out.print(navn + " "); // Utskrift: Ola Per Kari Ali Jasmin