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: Unterschied zwischen den Versionen

(Kommentarbereich)
Zeile 1: Zeile 1:
 
=== Aufgabenstellung ===
 
=== 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:
+
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};
 
  int[] list = {5, 8, 3, 6, 8, 9, 4, 2};
  
 
=== Algorithmus ===
 
=== Algorithmus ===
  
Wie Selection Sort funktioniert könnt ihr bei Wikipedia ([http://de.wikipedia.org/wiki/SelectionSort#Prinzip 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 http://de.wikipedia.org/wiki/SelectionSort#Beispiel].
+
Bei Wikipedia findet ihr Erklärungen zu der [[wikipedia:SelectionSort#Prinzip|Funktionsweise von Selection-Sort]] und dort gibt es auch ein [[wikipedia:SelectionSort#Beispiel|Beispiel, welches das Vorgehen des Algorithmus' visualisiert]].
Falls ihr Fragen haben solltet, fragt euren Tutor, da es keinen Sinn macht, zu programmieren anzufangen, wenn ihr den Algorithmus noch nicht verstanden habt.
+
Falls ihr Fragen haben solltet, fragt euren Tutor, da es keinen Sinn macht, mit Programmieren anzufangen, wenn ihr den Algorithmus noch nicht verstanden habt.
  
  
Zeile 20: Zeile 20:
 
  }
 
  }
  
Diese Methode soll das Array so ändern, das der Wert der an '''position1''' gestanden hat dann an '''position2''' steht, und andersrum.
+
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.
+
* 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) {
 
  public static int findMinimum(int[] array, int startIndex, int endIndex) {
 
   
 
   
Zeile 29: Zeile 29:
 
   
 
   
 
  }
 
  }
'''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.
+
'''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.
+
* 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''') {
 
  public static boolean '''isSorted'''(int[] '''array''') {
 
  [...]
 
  [...]
Zeile 39: Zeile 39:
 
* 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.
 
* 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.
+
* 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. Konntet ihr Fehler finden? --- beheben?
+
Schließlich überlegt euch, wie ihr eure Methoden am besten testet. Führt z.B. gegenseitige Tests durch. Konntet ihr Fehler finden? --- beheben?
  
  
Zeile 49: Zeile 49:
  
 
== Kommentare ==
 
== 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 ;)
+
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 ;)
  
 
<!--
 
<!--
Als kleine Starthilfe folgt ein Beispiel wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
+
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
  
 
==== Robert ====
 
==== Robert ====
Na mal schaun ob irgend jemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
+
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
 
-->
 
-->

Version vom 11. April 2007, 12:05 Uhr

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 position 2) {

[...] 

}

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 ;)