Zusammenfassung teil1 Flashcards
Arrays und Listen vergleich;
Beliebiges Element suchen: Array Θ(n), List Θ(n)
Auf Element mit Index i zugreifen: Array Θ(1), List Θ(n)
Element am Anfang einfugen: Array Θ(n), List Θ(1)
Bubblesort
Laufzeit liegt im Worst- und Average-Case in Θ(n^2). Im
Best-Case kann die Laufzeit bei optimierten
Implementierungen in Θ(n) liegen.
Selectionsort:
(nicht stabil) Selectionsort sucht in jeder Iteration das kleinste
Element in der noch unsortierten Teilfolge, entnimmt es und fügt es dann an die sortierte Teilfolge an.
Laufzeit/Vergleiche: Die Laufzeit liegt immer (Best/Average/Worst-Case) in Θ(n^2).
Vertauschungen immer Θ(n)
Insertionsort:
(stabil) Insertionsort entnimmt der unsortierten Teilfolge ein Element und fugt es an richtiger Stelle in die (anfangs leere) sortierte Teilfolge ein.
Laufzeit/Vergleiche:
Best-Case Θ(n)
Worst-Case Θ(n^2).
Average-Case Θ(n^2)
Vertauschungen:
Best-Case Θ(n)
Worst-Case Θ(n^2).
Average-Case Θ(n^2)
Wann ist Algorithmus effizient?
Wir nennen einen Algorithmus effizient, wenn seine
Laufzeit polynomiell in der Eingabegröße ist.
Internes Sortieren:
bezeichnet Sortierverfahren die nur im Hauptspeicher arbeiten
Stabiles Sortieren:
Ordnungserhalten bei gleichen Schlüsseln. Das bedeutet bei gleichen Schlüsseln
bleibt die ürsprungsreihenfolge erhalten. Bspw. Radix-Sort
Merge Sort:
(stabil)
* Teile Array in zwei Hälften.
* Sortiere jede Hälfte rekursiv.
* Verschmelze zwei Hälften zu einem sortierten Ganzen.
Laufzeit/Vergleiche immer : Θ(n log n)
Vertauschungen immer: Θ(n log n)
Speicher: immer Θ(n)
Quick Sort:
(nicht stabil)
Quicksort: Benutzt auch das Divide-and-Conquer-Prinzip, aber auf
eine andere Art und Weise.
Teile: Wähle ”Pivotelement“ x aus Folge A, z.B. das an der letzten Stelle stehende Element.
Teile A ohne x so in zwei Teilfolgen A1 und A2, dass gilt: A1 enthält nur Elemente ≤ x. A2 enthält nur Elemente ≥ x. Herrsche: Rekursiver Aufruf für A1. Rekursiver Aufruf für A2.
Laufzeit/Vergleiche:
Best/AVG Θ(n log n)
Worst Θ(n^2)
Speicher:
Best/AVG Θ(log n)
Worst Θ(n)
Vertauschungen:
Best Θ(n)
Worst/AVG Θ(n log n)
Lineare Suche
Best Case : Θ(1)
naives, sequenzielles Durchsuchen der Liste.
Worst/AVG Case: Θ(n)
Binäre Suche
Suchen in sortierter Liste durch Halbierung des Suchintervalls
Best Case : Θ(1)
naives, sequenzielles Durchsuchen der Liste.
Worst/AVG Case: Θ(logn)
Einsatz von Sortierverfahren Merge und quicksort
Quicksort:
Wird sehr oft in allgemeinen Sortiersituationen bevorzugt.
Mergesort:
Mergesort wird hauptsächlich fur das Sortieren von Listen verwendet.
Wird auch fur das Sortieren von Dateien auf externen Speichermedien eingesetzt.
- Dabei wird aber eine iterative Version von Mergesort (Bottom-up-Mergesort) verwendet, bei der nur log n-mal eine
Datei sequentiell durchgegangen wird.
Handshaking lemma für ungerichtete Graphen
Summe (deg(v)) = 2*|E|
Adjazenzmatrix vs Adjazenyliste
Adjazenzmatrix:
Platzbedarf in Θ(n^2).
Uberprüfen, ob (u, v) eine Kante ist, hat Laufzeit : Θ(1).
Aufzählen aller Kanten hat eine Laufzeit von Θ(n^2)
Adjazenzliste:
Platzbedarf in Θ(m+n).
Uberprüfen, ob (u, v) eine Kante ist, hat Laufzeit : Θ(deg(u)).
Aufzählen aller Kanten hat eine Laufzeit von Θ(m+n)
Lichte und Dichte Graphen:
Graphen sind dicht (dense) falls m = Θ(n^2).
Graphen sind licht (sparse) falls m = O(n)
Fur dichte Graphen sind beide Darstellungsformen
(Adjazenzmatrix oder Adjazenzlisten) vergleichbar.
Lichte Graphen Adjazenzlisten