Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/SelectionSort

Aufgabenstellung

Ziel dieser Aufgabe ist es, Werte in einem unsorierten Array zu sortieren. Das heißt, euer Programm bekommt ein Array zum Beipiel von ganzen Zahlen (int). Das könnte so aussehen:

int[] list = {5, 8, 3, 6, 8, 9, 4, 2};

Algorithmus

Bei Wikipedia findet ihr Erklärungen zu der Funktionsweise von Selection-Sort und dort gibt es auch ein Beispiel, welches das Vorgehen des Algorithmus' visualisiert. Falls ihr Fragen haben solltet, fragt euren Tutor, da es keinen Sinn macht, mit Programmieren anzufangen, wenn ihr den Algorithmus noch nicht verstanden habt.


Tipps

  • Ihr werdet eine Methode brauchen, die zwei Werte in dem Array tauscht, diese könnte so aussehen:
public static void swap(int[] array, int position1, int position2) {

[...] 

}

Diese Methode soll das Array so ändern, dass der Wert, der an position1 stand, dann an position2 steht, und andersrum.


  • Eine weitere Methode, die ihr braucht, ermittelt die Position des kleinesten Wertes in einem Teilarray.
public static int findMinimum(int[] array, int startIndex, int endIndex) {

[...]

}

startIndex und stopIndex sind die Positionen, an dem der zu untersuchende Teilbereich des Arrays anfängt, bzw aufhört. Diese Angaben sind nötig, da ihr später den kleinsten Wert nur in eurem unsortierten Teil des Arrays finden wollt.


  • Um besser testen zu können, eignet sich eine Methode, die überprüft, ob ein Array sortiert ist oder nicht.
public static boolean isSorted(int[] array) {
[...]
}
  • Auch eine Methode, die euer Array auf der Konsole ausgibt, sollte nicht fehlen, so könnt ihr am besten Schritt für Schritt überprüfen, ob euer Code richtig arbeitet oder nicht.
  • Versucht dabei gleich passende Namen zu verwenden und auch Kommentare nicht zu vergessen. Solltet ihr zu zweit an einem Rechner sitzen, dann sollte die Person, die gerade nicht tippt, den Tippenden auf Fehler und Ungenauigkeiten hinweisen. So kontrolliert ihr euch gegenseitig und euer Code wird besser. Vergesst nicht, euch in regelmäßigen Abständen mit dem Tippen abzuwechseln.

Schließlich überlegt euch, wie ihr eure Methoden am besten testet. Führt z.B. gegenseitige Tests durch. Konntet ihr Fehler finden? --- beheben?

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)