Algorithmen

Sortieralgorithmen

Diese Seite erklärt die grundlegenden Sortierverfahren Bubble Sort, Selection Sort und Insertion Sort – jeweils mit Pseudocode und Laufzeitanalyse.

Bubble Sort

Beim Bubble Sort werden benachbarte Elemente verglichen und vertauscht, wenn sie in der falschen Reihenfolge sind. Dieser Vorgang wiederholt sich, bis die Liste sortiert ist.

Eigenschaften:

  • Einfach zu verstehen
  • Ineffizient bei großen Datenmengen
  • Laufzeit: O(n²)

Pseudocode:

function bubbleSort(liste):
    wiederhole
        vertauscht = false
        für i von 0 bis liste.länge - 2:
            wenn liste[i] > liste[i + 1]:
                tausche(liste[i], liste[i + 1])
                vertauscht = true
    bis nicht vertauscht

Selection Sort

Selection Sort sucht in jedem Durchlauf das kleinste Element aus dem unsortierten Teil und tauscht es an die richtige Position.

Eigenschaften:

  • Stabil und einfach
  • Weniger Tauschvorgänge als Bubble Sort
  • Laufzeit: O(n²)

Pseudocode:

function selectionSort(liste):
    für i von 0 bis liste.länge - 1:
        minIndex = i
        für j von i + 1 bis liste.länge - 1:
            wenn liste[j] < liste[minIndex]:
                minIndex = j
        tausche(liste[i], liste[minIndex])

Insertion Sort

Insertion Sort baut die sortierte Liste schrittweise auf, indem jeweils ein Element an der richtigen Stelle im bereits sortierten Teil eingefügt wird.

Eigenschaften:

  • Gut für kleine oder fast sortierte Daten
  • Laufzeit: O(n²), aber effizient bei fast sortierten Daten

Pseudocode:

function insertionSort(liste):
    für i von 1 bis liste.länge - 1:
        key = liste[i]
        j = i - 1
        während j ≥ 0 und liste[j] > key:
            liste[j + 1] = liste[j]
            j = j - 1
        liste[j + 1] = key

Typische Prüfungsfragen

  • Erläutern Sie den Ablauf des Bubble Sort anhand eines Beispiels.
  • Welche Vorteile bietet Insertion Sort bei fast sortierten Daten?
  • Warum benötigt Selection Sort weniger Tauschvorgänge als Bubble Sort?
  • Wann ist Insertion Sort anderen einfachen Sortieralgorithmen überlegen?