Informatik II Sortieralgorithmen
|
|
|
- Axel Hofmann
- vor 9 Jahren
- Abrufe
Transkript
1 lausthal Informatik II Sortieralgorithmen lausthal University, ermany Motivation Preprocessing fürs Suchen Sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen Viele raffinierte Methoden wurden im Laufe der Zeit entwickelt, von denen wir ein paar kennenlernen wollen 2 1
2 Die Sortieraufgabe Eingabe: Datensätze (records) aus einem File, der Form Key und satellite/payload data Sortierschlüssel Inhalt Sortierschlüssel kann aus einem oder mehreren Feldern des Datensatzes bestehen (z.b. Nachname + Vorname) Bedingung: auf den Keys muß eine totale Ordnungsrelation definiert sein, d.h., es gilt Trichotomie: für alle Keys a,b gilt genau eine Relation Transitivität: Aufgabe: bestimme eine Permutation Π = (p1,, pn) für die Records, so daß die Keys in nicht-fallender Ordnung sind: 3 Implementierung üblicherweise als Klasse mit eingebautem Vergleichsoperator: class MyData: def init ( self, key, value ): self.key = key self.value = value def cmp ( self, other ): if self.key < other.key: return -1 elif self.key > other.key: return 1 else: return 0 a = MyData( ) b = MyData( ) if a < b:
3 Klassifikation / Kriterien von Sortierverfahren Interne Sortierverfahren: Alle Datensätze befinden sich im Hauptspeicher Es besteht random access auf den gesamten Datenbestand Bekannte Verfahren: Bubblesort, Insertionsort, Selectionsort, Quicksort, Heapsort Externe Sortierverfahren: Die Datensätze befinden sich in einem Hintergrundspeicher (Festplatte, Magnetband, etc.) und können nur sequentiell verarbeitet werden Bekanntes Verfahren: Mergesort 5 Exkurs: Tape Libraries Wird auch heute noch für Datenarchive gerne verwendet Beispiel (Deutsches Klimarechenzentrum, Stand 2010): 8 robots per library 500 TeraByte disk cache Total capacity: 60 PetaByte Projected fill rate: 10 PetaByte/year 6 3
4 Fortsetzung Klassifikation Vergleichsbasiert (comparison sort): zulässige Operationen auf den Daten sind nur Vergleich und Umkopieren Zahlenbasiert: man darf/kann auf den Keys auch rechnen Diese Unterscheidung ist analog zu der bei den Suchalgorithmen Stabil (stable): leiche Keys haben nach dem die selbe relative Lage zueinander wie vorher Array-basiert vs. Listen-basiert: Können Datensätze beliebig im Speicher angeordnet sein (Liste), oder müssen sie hintereinander im Speicher liegen (Array) In-Place (in situ): Algorithmus braucht nur konstanten zusätzlichen Speicher (z.b. Zähler; aber keine Hilfsarrays o.ä.) Konsequenz: Ausgabe-Array = Eingabe-Array 7 Erster Sortier-Algorithmus: Bubblesort Die Idee des Algo: Vergleiche von links nach rechts jeweils zwei Nachbarelemente und vertausche deren Inhalt, falls sie in der falschen Reihenfolge stehen; Wiederhole dies, bis alle Elemente richtig sortiert sind; Analogie: die kleinsten Elemente steigen wie Luftblasen zu ihrer richtigen Position auf (je nachdem, wierum man sortiert) 8 4
5 Effiziente Python-Implementierung def bubblesort( a ): for k in...: for i in range( 0, len(a)-1 ): if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] def bubblesort( a ): for k in range( 0, len(a)-1 ): for i in range( 0, len(a)-1 ): if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] def bubblesort( a ): for k in range( len(a)-1, 0, -1 ): for i in range(0,k): if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] 9 Beispiel: 10 5
6 Korrektheits-Beweis Schleifeninvariante: Nach dem 1. Durchlauf befindet sich das größte Element an der richtigen Stelle Nach dem 2. Durchlauf auch das 2.-größte, etc. Nach dem i-ten Durchlauf befinden sich die i größten Elemente an der richtigen Position (und damit in der richtigen Reihenfolge) Nach spätestens N-1 Durchgängen ist das Array sortiert Da bei jedem Durchlauf auch andere Elemente ihre Position verbessern, ist häufig der Vorgang bereits nach weniger als N-1 Durchgängen beendet 11 Beispiel 12 6
7 Kleine Optimierung: Test auf vorzeitiges Ende def bubblesort( a ): for k in range (len(a)-1, 0, -1): sorted = true for i in range (0,k): if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] sorted = false if sorted: break 13 Aufwand von Bubblesort Laufzeitberechnung für den worst case: def bubblesort( a ): k = len(a)-1 while k >= 0: for i in range (0,k): if a[i]>a[i+1]: a[i], a[i+1] = a[i+1], a[i] O(1) T(n) O(k) n n 1 T (n) O k =O k = O n(n + 1) = O n2 2 k=1 k=1 Für den best case (für den ode mit "early exit"): T (n) O n Beweis: Übungsaufgabe Im average case (o.bew.): T (n) O n2 14 7
8 Weitere "einfache" Sortierverfahren Insertion Sort, Selection Sort, u.a Quicksort. A. R. Hoare, 1960.A.R. Hoare, britischer Informatiker, erfand 1960 Quicksort Bis dahin dachte man, man müsse die einfachen Sortieralgorithmen durch raffinierte AssemblerProgrammierung beschleunigen Quicksort zeigt, daß es sinnvoller ist, nach besseren Algorithmen zu suchen Einer der schnellsten bekannten allgemeinen Sortierverfahren Idee: Vorgegebenes Sortierproblem in kleinere Teilprobleme zerlegen Teilprobleme rekursiv sortieren Allgemeines Algorithmen-Prinzip: divide and conquer (divide et impera) 39 8
9 Der Algorithmus 1. Wähle irgend einen Wert W des Arrays A 2. Konstruiere Partitionierung des Arrays mit folgenden Eigenschaften: A1 W W A2 >W A1 und A2 sind noch unsortiert! 3. Wenn man jetzt A1 und A2 sortiert, ist das Problem gelöst 4. A1 und A2 sortiert man natürlich wieder mit... Quicksort 40 Algo-Animation 41 9
10 Konstruktion der Partition ist die eigentliche Kunst / Arbeit bei Quicksort! 1. Wahl eines Elementes W im Array (dieses heißt Pivot-Element) 2. Suchen eines i von links mit A[i]>W 3. Suchen eines j von rechts mit A[j] W 4. Vertauschen von A[i] und A[j] 5. Wiederholung der Schritte bis i j-1 gilt 6. W "dazwischen" speichern Resultat: A1 W W A2 >W 42 Algo-Animation 43 10
11 Python-Implementierung def quicksort( A ): recquicksort( A, 0, len(a)-1 ) def recquicksort( A, links, rechts ): if rechts <= links : return # wrapper # base case # find pivot and partition array in-place pivot = partition( A, links, rechts ) # sort smaller array slices recquicksort( A, links, pivot-1 ) recquicksort( A, pivot+1, rechts ) 44 def partition( A, links, rechts ): pivot = rechts # choose right-most as pivot i, j = links, rechts-1 while i < j: # quit when i,j "cross over" # find elem > pivot from left while A[i] <= A[pivot] and i < rechts: i += 1 # find elem < pivot from right while A[j] > A[pivot] and j > links: j -= 1 if i < j: # swap mis-placed elems A[i], A[j] = A[j], A[i] # put pivot at its right place and return its pos A[i], A[pivot] = A[pivot], A[i] return i 45 11
12 Beispiel-Durchlauf von Quicksort 47 Visualisierung von Quicksort LO = nach der ersten Iteration, RU = fertig. X-Achse = Index, Y-Achse = Wert in diesem Array-Element 48 12
13 Korrektheit der Partitionierung Ann.: wähle das letzte Element Ar im Teil-Array Al..r als Pivot Bei der Partitionierung wird das Array in vier Abschnitte, die auch leer sein können, eingeteilt: 1. Al..i-1 Einträge dieses Abschnitts sind pivot 2. Aj+1..r-1 Einträge dieses Abschnitts sind > pivot 3. Ar = pivot 4. Ai..j Status bzgl. pivot ist unbekannt Ist eine Schleifeninvariante 49 Initialisierung: vor der ersten Iteration gilt: Al..i-1 und Aj+1..r-1 sind leer Bedingungen 1 und 2 sind (trivial) erfüllt r ist der Index des Pivots Bedingung 3 ist erfüllt i, j = l, r-1 p = A[r] while i < j: # find elem > pivot from left while A[i] <= p and i < r: i += 1 # find elem < pivot from right while A[j] > p and j > l: j -= 1 # swap mis-placed elems if i < j: A[i], A[j] = A[j], A[i] [ ] 50 13
14 Erhaltung der Invariante (am Ende des Schleifenrumpfes): Nach erster while-schleife gilt: A[i] > p oder i=r Nach zweiter while-schleife gilt: A[j] p oder j=l Vor if gilt: falls i<j, dann ist A[i] > p A[j] - was dann durch den if-body "repariert" wird Nach if gilt wieder Schleifeinvariante i, j = l, r-1 p = A[r] while i < j: # find elem > pivot from left while A[i] <= p and i < r: i += 1 # find elem < pivot from right while A[j] > p and j > l: j -= 1 # swap mis-placed elems if i < j: A[i], A[j] = A[j], A[i] [ ] 51 Beendigung: nach while-schleife gilt: d.h. i, j = l, r-1 p = A[r] while i < j: [ ] A[i], A[r] = A[r], A[i] return i - Al..i-1 pivot - Ai+1..r-1 > pivot - Ar = pivot - der vierte Bereich, Ai..j, ist leer Die letzte Zeile vertauscht Ai und Ar: Pivot wird vom Ende des Feldes zwischen die beiden Teil-Arrays geschoben damit hat man Al..i pivot und Ai+1..r > pivot Also wird die Partitionierung korrekt ausgeführt 52 14
15 Laufzeit des Algorithmus Die Laufzeit von Quicksort hängt davon ab, ob die Partitionen ausgeglichen sind oder nicht Der Worst-ase: Tritt auf, wenn jeder Aufruf zu am wenigsten ausgewogenen Partitionen führt Eine Partitionen ist am wenigsten ausgewogen, wenn - das Unterproblem 1 die röße n 1 und das Unterproblem 2 die röße 0, oder umgekehrt, hat - pivot alle Elemente Al..r-1 oder pivot < alle Elemente Al..r-1 Jeder Aufruf ist am wenigsten ausgewogen, wenn - das Array sortiert oder umgekehrt sortiert ist 53 Laufzeit für Worst-ase-Partitionen bei jedem Rekursionsschritt: T (n) = T (n 1) + T (0) + PartitionTime(n) = T (n 1) + Θ(n) n n = Θ(k) = Θ k k=1 k=1 Rekursionsbaum für Worst-asePartitionen n 1 n 2 n 3 2 Θ(n )
16 Laufzeit bei Best-ase-Partitionierung Rekursionsbaum für Best-ase-Partition röße jedes Unterproblems genauer: ein Unterproblem hat die röße, das andere die röße cn Laufzeit: cn/2 cn cn/2 cn log (n) cn/4 cn/4 cn/4 cn/4 cn Ann.: T(1) = c Also: c c c c c c cn esamt: 55 Auswahl des Pivot-Elementes Pivot = "central point or pin on which a mechanism turns", oder "a person or thing that plays a central part or role in an activity" Optimal wäre ein Element, das A in zwei genau gleich große Teile partitioniert (Median) Exakte Suche macht Laufzeitvorteil von Quicksort wieder kaputt Üblich ist: Inspektion von drei Elementen A[li], A[re], A[mid] mit mid=(li+re)/2 wähle davon den Median (wertmäßig das mittlere der drei) nennt man dann "median-of-three quicksort" Alternative: zufälligen Index als Pivot-Element Diese Technik heißt: "Randomisierung" 56 16
17 Beispiel, wenn man nur A[mid] als Vergleichelement nimmt: SORTIERBEISPIEL SORTIER B EISPIEL B ORTIERSEISPIEL schlechtest mögliche Partitionierung A2 weiter sortieren: ORTIERSEISPIEL ORTIER S EISPIEL ORLIEREEIIP S ST Beispiel, wenn mittleres Element von A[li], A[re], A[mid] als PivotElement verwendet wird: SORTIERBEISPIEL BEIIIEE L RTSPROS 57 Programm für Median-of-3-Quicksort # Liefert Indizes a,b,c (= Permutation # so dass A[a] <= A[b] <= A[c] def median( A, i, j, k ): if A[i] <= A[j]: if A[j] <= A[k]: return i,j,k else: # if A[i] <= A[k]: return i,k,j else: return k,i,j else: # if A[i] <= A[k]: return j,i,k else: # if A[j] <= A[k]: return j,k,i else: return k,j,i von i,j,k) i,k < j j < i j,k < i 58 17
18 def median_pivot( A, links, rechts ): middle = (links+rechts) / 2 l,m,r = median( A, links, middle, rechts ) A[l], A[m], A[r] = A[links], A[middle], A[rechts] return m def median_quicksort( A, links, rechts ): if rechts <= links : return # find Pivot and partition array in-place pivot = median_pivot( A, links, rechts ) pivot = partition( A, links+1, pivot, rechts-1 ) # sort smaller array slices median_quicksort( A, links, pivot-1 ) median_quicksort( A, pivot+1, rechts ) 59 Weitere Optimierungen von Quicksort Beobachtung: Arrays auf den unteren Levels der Rekursion sind "klein" und "fast" sortiert Idee: verwende dafür Algo, der auf "fast" sortierten Arrays schneller ist Insertionsort Was tun gegen quadratische Laufzeit? Zähle Rekursionstiefe mit Schalte auf anderen Algo um, falls Tiefe größer c *log(n) wird Typischerweise: wähle c=2, schalte um auf Heapsort (später) 60 18
19 State-of-the-Art für Quicksort Untere Schranke für average case: av (n) log(n!) 1 n log n 1, 4427n Ziel: av (n) n log n + cn fu r mo glichst kleines c Quicksort-Verfahren: QUIKSORT (Hoare 1962) LEVER-QUIKSORT (Hoare 1962) QUIK-HEAPSORT (antone & incotti 2000) QUIK-WEAK-HEAPSORT 61 Der Heap Definition Heap : ist ein vollständiger Baum mit einer Ordnung, für den gilt, daß jeder Vater seiner beiden Söhnen ist, d.h., v : v left(v ) v right(v ) Form: Eigenschaft: entlang jedes Pfades von der Wurzel zu einem Knoten sind die Knoten aufsteigend sortiert. Spezielle Eigenschaft der Wurzel: kleinstes Element Achtung: keine Ordnung zwischen left(v) und right(v)! Obige Definition ist ein sog. "Min-Heap" (analog "Max-Heap") 62 19
20 Erinnerung Array betrachtet als vollständiger Baum physikalisch lineares Array logisch Binärbaum, gefüllt auf allen Stufen (außer der niedrigsten) Abbildung von Array-Elementen auf Knoten (und umgekehrt) : Wurzel A[1] links[i] A[ 2i ] rechts[i] A[ 2i+1 ] Vater[i] A[ i/2 ] 63 Beispiel Max-Heap als Array Max-Heap als Binärbaum Höhe eines Heaps: log(n) Letzte Zeile wird von links nach rechts aufgefüllt 64 20
21 Einfügen eines Knotens: Nur eine mögliche Position, wenn der Baum vollständig bleiben soll Aber im allg. wird Heap-Eigenschaft verletzt Wiederherstellen mit UpHeap (Algorithmus ähnlich zu Bubblesort): vergleiche Sohn und Vater und vertausche gegebenenfalls 65 Beispiel: Aufwand: O(log N) 66 21
22 Löschen der Wurzel: Ersetzen durch das am weitesten rechts stehende Element der untersten Schicht (Erhaltung der Formeigenschaft des Heaps) Zustand jetzt: beide Teilbäume unter der Wurzel sind immer noch Heaps, aber der gesamte Baum i.a. nicht mehr Wiederherstellen der Ordnungseigenschaft mit DownHeap: Vertauschen des Vaters mit dem kleineren der beiden Söhne, bis endgültiger Platz gefunden wurde 67 Beispiel: E Aufwand: UpHeap und DownHeap sind beide O(log N) 68 22
23 Heap implementiert eine Verallgemeinerung des FIFO-Prinzips: die Priority-Queue (p-queue) Daten werden nur vorne an der Wurzel (höchste Priorität) entfernt (wie bei Queue) Aber Daten werden entsprechend ihres Wertes, der Priorität, einsortiert 69 23
Erster Sortier-Algorithmus: Bubblesort
Erster Sortier-Algorithmus: Bubblesort Die Idee des Algo: Vergleiche von links nach rechts jeweils zwei Nachbarelemente und vertausche deren Inhalt, falls sie in der falschen Reihenfolge stehen; Wiederhole
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte
A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.
Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort
Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
Heapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Sortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: [email protected] Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.
Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.
Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:
Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele
Algorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
Kapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
Kapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben
3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.
Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf
Programmieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
Algorithms & Data Structures 2
Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN
Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
Kapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
Untere Schranke für allgemeine Sortierverfahren
Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? Satz: Zum einer Folge von n Keys mit einem allgemeinen Sortierverfahren
Tutoraufgabe 1 (Sortieralgorithmus):
Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):
Datenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
Prof. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:
lausthal Informatik II Divide & onquer. Zachmann lausthal University, ermany [email protected] Algorithmen-Design-Techniken Die wichtigsten Entwurfsverfahren für Algorithmen: 1. Divide and onquer
4. Sortieren 4.1 Vorbemerkungen
. Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig
Algorithmen und Datenstrukturen 12
12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort
2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
Übung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
Abschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
Untere Schranke für allgemeine Sortierverfahren
Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? omputational Model hier: RAM und nur Vergleiche auf Elemente Sog. "comparison-based
Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A3. Sortieren: Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März 2018 Sortieralgorithmen Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse
Suchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
Kapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
Übung Algorithmen I
Übung Algorithmen I 20.5.15 Christoph Striecks [email protected] (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort
Abschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.
lausthal Informatik II Bäume. Zachmann lausthal University, ermany [email protected] Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy
Elementare Sortierverfahren
Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................
Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing [email protected] www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07
2 Sortieren Untersuchungen haben gezeigt, dass mehr als ein Viertel der kommerziell verbrauchten Rechenzeit auf Sortiervorgänge entfällt. Sortierproblem Gegeben ist eine Folge F von Datensätzen (engl.:
Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.
QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert
4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1
Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.
Übersicht 6 Sortieren Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren H. Täubig (TUM) GAD SS 14 221 Statisches Wörterbuch Sortieren Lösungsmöglichkeiten:
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
Suchen und Sortieren (Die klassischen Algorithmen)
Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle
Sortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2
Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik [email protected] [email protected] Merge-Sort Anwendbar für
Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
1.3 Erinnerung: Mergesort
Mergesort 1.3 Erinnerung: Mergesort Um n Zahlen/Objekte a 1,..., a n zu sortieren, geht der Mergesort-Algorithmus so vor: Falls n n 0 : Sortiere mit einem naiven Algorithmus (z. B. Insertion Sort). Sonst:
Algorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik [email protected] Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Programmiertechnik II
2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur
JAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
Sortieralgorithmen. Selection Sort
intuitivster Suchalgorithmus Sortieralgorithmen Selection Sort In jedem Schritt wird das kleinste Element im noch unsortierten Array gesucht und ans Ende des bisher sortierten Teilarrays gehangen 3 1 4
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n
Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: [email protected] Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim
Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung.
Informatik II - 195 Kapitel 9 Sortierverfahren Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung Sortierte Folgen von Objekten bringen eine deutliche Vereinfachung für den
Interne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
Suchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die
lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)
Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2
Sortieren und Suchen Jens Wächtler 17.05.2017 Hallo Welt! -Seminar LS 2 Überblick Sortieren kurze Wiederholung Binäre & Ternäre Suche Binäre Suche in einer Liste Bisektionsverfahren (Nullstellensuche)
