Algorithmus entwickeln und implementieren: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Kategorie:Informatik Kategorie:Informatik-Abitur Die Aufgabenstellung ''Entwickeln Sie einen Algorithmus, der ...''<br/> ''Implementieren Sie den Algorithmus.'' ist im Zentralabitur sehr häufig. In der Regel gibt es für die Entwicklung des Algorithmus 40% der Punkte und für die Implementierung 60%. Auf dieser Seite werden Beispiele gegeben, wie man die Aufgabe angehen kann. '''Hinweis''':<br/> Am SIBI darf man den Algorithmus mit '''Spieg…“) |
|||
| Zeile 50: | Zeile 50: | ||
private List<Person>teilnehmerListe; | private List<Person>teilnehmerListe; | ||
'''public List<Person> | '''public List<Person> insertionSort(){''' | ||
List<Person> ergebnis = new List<>(); | List<Person> ergebnis = new List<>(); | ||
teilnehmerListe.toFirst(); | teilnehmerListe.toFirst(); | ||
Aktuelle Version vom 3. Februar 2024, 19:36 Uhr
Die Aufgabenstellung
Entwickeln Sie einen Algorithmus, der ...
Implementieren Sie den Algorithmus.
ist im Zentralabitur sehr häufig. In der Regel gibt es für die Entwicklung des Algorithmus 40% der Punkte und für die Implementierung 60%.
Auf dieser Seite werden Beispiele gegeben, wie man die Aufgabe angehen kann.
Hinweis:
Am SIBI darf man den Algorithmus mit Spiegelstrichen entwickeln; es müssen keine ganzen Sätze formuliert werden.
Die Darstellung des Algorithmus muss aber verständlich sein, ohne dass man die Implementierung anschaut!
Beispiel 1: Sortieren durch Einfügen
Aufgabenstellung:
Gegeben ist eine Liste teilnehmerListe, die Objekte vom Typ Person enthält.
Diese Liste soll mit dem Insertionsort-Verfahren nach dem Namen der Personen sortiert werden.
- Entwickeln Sie einen Algorithmus, der
teilnehmerListenach dem Namen sortiert. - Implementieren Sie den Algorithmus.
Lösung Entwickeln Sie einen Algorithmus...
Zwei Methoden:
- Hilfsmethode
anRichtigerStelleEinfügen - Hauptmethode
insertionSort
Hilfsmethode anRichtigerStelleEinfuegen:
- fügt eine Person an alphabetisch richtigen Stelle in eine Liste ein.
- Die Parameter sind eine Liste
pList, in die eingefügt werden soll, undpPerson, die einzufügende Person. pListmit einer Schleife durchlaufen.- Wenn
pPersonim Alphabet VOR der Person ist, auf die der Listenzeiger steht,
dannpPersonmitinsertVOR dem aktuellen Element einfügen
und die Methode verlassen.
- Wenn
- Wenn das Ende der Schleife erreicht wurde, dann
pPersonhinten anhängen.
Hauptmethode insertionSort:
- kein Parameter, gibt eine sortierte Liste zurück.
- eine leere Liste
ergebniserzeugen. teilnehmerListemit einer Schleife durchlaufen.- für jede Person in der Liste die Hilfsmethode
anRichtigerStelleEinfuegenaufrufen, um sie an die richtige Stelle inergebniseinzufügen.
- für jede Person in der Liste die Hilfsmethode
Lösung: Implementieren Sie den Algorithmus.
private List<Person>teilnehmerListe;
public List<Person> insertionSort(){
List<Person> ergebnis = new List<>();
teilnehmerListe.toFirst();
while(teilnehmerListe.hasAccess()){
Person aktuell = teilnehmerListe.getContent();
anRichtigerStelleEinfugen(ergebnis, aktuell);
teilnehmerListe.next();
}
return ergebnis;
}
public void anRichtigerStelleEinfugen(List<Person> pList, Person pPerson){
pList.toFirst();
while(pList.hasAccess()){
Person aktuell = pList.getContent();
// pPerson mit der aktuellen person vergleichen
if(pPerson.getName().compareTo(aktuell.getName()) < 0){
pList.insert(pPerson);
return;
}
pList.next();
}
// pPerson wurde noch nicht eingefuegt!
pList.append(pPerson);
}