Musterlösung: Quicksort

Dies ist die fünfte Programmieraufgabe. Die Lösung zeigt, wie Quicksort mit Rekursion, einem Pivotelement und dem Aufteilen in kleiner/groesser-Listen funktioniert. Für die Nachvollziehbarkeit verwenden wir eine fixe Liste im Code.

Erklärung der Lösung

Schritt-für-Schritt

1) Abbruchbedingung

if len(liste) <= 1:
    return liste

Listen der Länge 0 oder 1 sind bereits sortiert. Das stoppt die Rekursion.

2) Pivotelement wählen

pivot = liste[0]

Hier wird das erste Element als Pivot genutzt. Andere Strategien sind möglich, das Prinzip bleibt gleich.

3) Aufteilen

kleiner  = [x for x in liste[1:] if x <= pivot]
groesser = [x for x in liste[1:] if x >  pivot]

Alle Werte ≤ Pivot nach links, alle > Pivot nach rechts. Das Pivot selbst bleibt in der Mitte.

4) Rekursiv sortieren und zusammenfügen

return quicksort(kleiner) + [pivot] + quicksort(groesser)

Die Teillisten werden sortiert und mit dem Pivot zur Gesamtlösung zusammengesetzt.

Komplette Musterlösung (Python)

Was du aus dieser Aufgabe lernst

  • Wie Rekursion eine Problemzerlegung in Teilprobleme ermöglicht.
  • Wie das Pivotelement die Liste strukturiert.
  • Wie Listenverständnis ([...] for ... if ...) die Aufteilung vereinfacht.
Zurück zur Aufgabe
Weiter zur nächsten Aufgabe