/**
 * Sorter.java - "Programmering i Java", 4.utgave - 2009-07-01
 *
 * Klassen inneholder tre sorteringsmetoder fra læreboka.
 * sorterHeltallstabell(), se side 288
 * sorterObjekter(), to utgaver, se side 410
 */

package mittBibliotek;
public class Sorter {
  public static void sorterHeltallstabell(int[] tabell) {
    for (int start = 0; start < tabell.length; start++) {
      int hittilMinst = start;
      for (int i = start + 1; i < tabell.length; i++) {
        if (tabell[i] < tabell[hittilMinst]) hittilMinst = i;
      }
      int hjelp = tabell[hittilMinst];
      tabell[hittilMinst] = tabell[start];
      tabell[start] = hjelp;
    }
  }

  public static void sorterObjekter(Object[] objekter) {
    if (objekter != null && objekter.length > 0) {
      for (int start = 0; start < objekter.length; start++) {
        int hittilMinst = start;
        for (int i = start + 1; i < objekter.length; i++) {
          Comparable dette = (Comparable) objekter[i];
          Comparable hittilMinsteObjekt = (Comparable) objekter[hittilMinst];
          if (dette.compareTo(hittilMinsteObjekt) < 0) {
            hittilMinst = i;
          }
        }
        Object hjelp = objekter[hittilMinst];
        objekter[hittilMinst] = objekter[start];
        objekter[start] = hjelp;
      }
    }
  }

  public static void sorterObjekter(Object[] objekter, java.util.Comparator comp) {
    if (comp == null) {
      sorterObjekter(objekter);
    }
    if (objekter != null && objekter.length > 0) {
      for (int start = 0; start < objekter.length; start++) {
        int hittilMinst = start;
        for (int i = start + 1; i < objekter.length; i++) {
          Object dette = objekter[i];
          Object hittilMinsteObjekt = objekter[hittilMinst];
          if (comp.compare(dette, hittilMinsteObjekt) < 0) {
            hittilMinst = i;
          }
        }
        Object hjelp = objekter[hittilMinst];
        objekter[hittilMinst] = objekter[start];
        objekter[start] = hjelp;
      }
    }
  }
}

