Stabilität

Beginner Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Ein Sortierer ist stabil, wenn gleiche Schlüssel ihre relative Reihenfolge behalten. Insertion Sort ist stabil; Selection Sort typischerweise nicht (je nach Implementierung).

Stabilität zählt, wenn an Schlüsseln Zusatzdaten hängen.

Wo gebraucht

Mehrstufiges Sortieren (erst Name, dann Note) und UI-Tabellen: stabile Sortierung erhält die vorherige Ordnung. Collections.sort / TimSort sind stabil; klassisches Quicksort typischerweise nicht.

Vertiefung

Eine Sortierung ist stabil, wenn Datensätze mit identischem Sortierschlüssel nachher in derselben gegenseitigen Abfolge erscheinen wie vorher. Das ist relevant, wenn mehrere Sortierschritte kombiniert werden, etwa zuerst nach Vorname und danach nach Nachname.

Stabilität ist eine Eigenschaft der konkreten Implementierung, nicht nur des Algorithmusnamens. Insertion Sort kann durch Verschieben nur strikt grösserer Elemente stabil arbeiten. Selection Sort mit einem weiten Tausch kann dagegen einen gleichwertigen Datensatz über einen anderen hinwegbewegen.

Schwierigkeitsstufen

  1. Stabilität an Datensätzen mit Schlüssel und Zusatzkennung prüfen.
  2. Eine Vergleichsbedingung stabil oder instabil machen.
  3. Mehrstufige Sortierungen in der richtigen Reihenfolge planen.

Fallstricke

An Arrays mit lauter verschiedenen Werten lässt sich Stabilität nicht beobachten. Eine Prüfung braucht gleiche Schlüssel mit unterscheidbaren Begleitdaten, sonst bleibt ein Ordnungsverlust unsichtbar.

University approvals: 0
Tasks
Question 1

Was bedeutet stabile Sortierung?

Question 2

Datensätze wurden zuerst nach Vorname und danach stabil nach Nachname sortiert. Was gilt innerhalb eines Nachnamens?

Question 3

Sortiere Pair-Objekte stabil nach key. Bei gleichem key muss die ursprüngliche Reihenfolge der ids erhalten bleiben.

Hint

Arrays.sort(T[], Comparator) sortiert Objektarrays stabil. Ein Comparator lässt sich mit Comparator.comparingInt(p -> p.key) bauen.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy