Vertiefung der Programmierung

Sortieren

Motivation

Wann macht
es Sinn, Daten zu sortieren?

Vorname
 
NachnameNote 🤪
DavidEngelhardt...
HansTimmermann...
KjellTreder...
MarianHimstedt...

Preis

Zufriedenheit ⭐️

Sortierverfahren

BubbleSort

MergeSort

Quicksort

TimSort

InsertionSort

SelectionSort

🔗 Wikipedia: Sortierverfahren

uvm.

BubbleSort (Algorithmus)

  • BubbleSort vertauscht immer benachbarte Elemente
  • Datenreihe wird wiederholt durchlaufen:
    • Am Ende steht immer das aktuell größte Element ganz hinten / vorne (aufsteigende vs. absteigende Sortierung)
    • jeder Durchlauf betrachtet ein Element weniger
      ➔ dieses wurde beim letzten Mal einsortiert
BubbleSort(array)

    n = Länge von array

    für i = 0 bis n - 2

        für j = 0 bis n - 2 - i

            wenn array[j] > array[j + 1]

                tausche array[j] und array[j + 1]

Bild ist gemeinfrei

Best casen
Average case​n²
Worst case

BubbleSort (Beispiel)

pencil

live

Bild ist gemeinfrei

MergeSort (Algorithmus)

Bild ist gemeinfrei

  • Divide (=Aufteilen)
    • Teile die Daten in zwei etwa gleich große Abschnitte
  • Sort  (=Sortieren)
    • Sortieren den linken Abschnitt
    • Sortiere den rechten Abschnitt
  • Merge (=Zusammenführen)
    • Füge die Abschnitte unter Beibehaltung der Ordnung zusammen
    • Zusammenführen funktioniert nach »Reißverschlussprinzip«
Best casen*log(n)
Average case​n*log(n)
Worst casen*log(n)

MergeSort (Beispiel)

Bild ist gemeinfrei

pencil

live

BubbleSort vs. MergeSort (am Beispiel)

  • BubbleSort
    • Nimm die Karten auf die Hand und vertausche zwei benachbarte Karten
      wenn sie in der falschen Reihenfolge sind
    • Wiederhole das, bis die Karten geordnet sind

 

  • MergeSort
    • Teile die Karten in zwei Teile
    • Sortiere die beiden Haufen einzeln 
    • füge sie nach Reißverschlussprinzip zusammen

Zusammenfassung

  • Sortieren ist zentrales »Problem« der Informatik

  • ​​Schnelles Suchen in sortierten Datenreihen möglich  ➔ Binäre Suche

  • BubbleSort ist ein einfaches Verfahren

    • leicht zu implementieren (und zum Lernen)

    • In der Praxis nicht mehr oft genutzt

  • MergeSort ist sehr effizient und wird (in leicht angepasster Form) in Java genutzt
     

[a,b,c,d]

[d,c,b,a]

Sortieren

By blackbill

Sortieren

  • 158