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 von zum Beipiel ganzen Zahlen (int). Das könnte so aussehen:

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

Algorithmus

Wie Selection Sort funktioniert könnt ihr bei Wikipedia (http://de.wikipedia.org/wiki/SelectionSort#Prinzip) nachlesen. Dort gibt es auch ein Beispiel, welches das Vorgehen des Algorithmus' visualisiert http://de.wikipedia.org/wiki/SelectionSort#Beispiel. Falls ihr Fragen haben solltet, fragt euren Tutor, da es keinen Sinn macht, zu 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 position 2) {

[...] 

}

Diese Methode soll das Array so ändern, das der Wert der an position1 gestanden hat 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 Array anfängt, bzw aufhört. Diese Angaben sind nötig, da ihr später das 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, 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. 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 ;)