Løsningsforslag - oppgaver i Avsnitt 1.2.4


Oppgave 2

  public static int[] nestMaks(int[] a)
  {
    if (a.length < 2) // må ha minst to verdier!
    throw new IllegalArgumentException("a.length(" + a.length + ") < 2!");

    int m = Tabell.maks(a);  // m er posisjonen til tabellens største verdi

    Tabell.bytt(a,0,m);  // bytter om slik at den største kommer forrest

    int k = Tabell.maks(a,1,a.length);

    if (k == m) k = 0; // den nest største lå opprinnelig forrest

    Tabell.bytt(a,0,m); // bytter tilbake

    return new int[] {m,k};

  } // nestMaks

Oppgave 3

  public static int[] nestMaks(int[] a)
  {
    if (a.length < 2) // må ha minst to verdier!
    throw new IllegalArgumentException("a.length(" + a.length + ") < 2!");

    int m = Tabell.maks(a);  // m er posisjonen til tabellens største verdi

    Tabell.bytt(a,a.length-1,m);  // bytter om slik at den største kommer bakerst

    int k = Tabell.maks(a,0,a.length-1);

    if (k == m) k = a.length - 1; // den nest største lå opprinnelig bakerst

    Tabell.bytt(a,a.length-1,m); // bytter tilbake

    return new int[] {m,k};

  } // nestMaks

Oppgave 4

  public static void sortering(int[] a)
  {
    for (int i = a.length; i > 1; i--)
    {
      int m = Tabell.maks(a,0,i);
      Tabell.bytt(a,i-1,m);
    }
  }

Oppgave 5

  public static void sortering(int[] a)
  {
    for (int i = 0; i < a.length - 1; i++)
    {
      int m = Tabell.min(a,i,a.length);
      Tabell.bytt(a,i,m);
    }
  }