Beispielanimation Heap-Sort

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
DNA-Array oder DNA-Chip
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Informatik II – Kapitel 11
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
Kapitel 7. Sortier-Algorithmen
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Heaps und Priority Queues
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rekursion Richard Göbel.
Einführung in die Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Animationen zu Kap. 4.3: AVL-Bäume
Petra Mutzel: DAP2, Universität Dortmund SS Rotationen (1) b(5)=2 b(7)=0 b(7)=1 5 ist unbalanciert5, 7, 8 sind balanciert b(5)=0 Rotation nach.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Information und Kommunikation
Animation von Dijkstra
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung
Prof. Dr. Petra Mutzel Animation Planarisierungsverfahren Lehrstuhl für Algorithm Engineering LS11 Universität Dortmund Automatisches Zeichnen von Graphen.
Animation von Dijkstra
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung
Informatik 1 Übung 4.
Algorithm Engineering Schnelles Sortieren Stefan Edelkamp.
Algorithmen und Datenstrukturen Übungsmodul 8
Externspeicher- Algorithmen Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen 2.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Binärbäume.
Heap Operationen Folien bitte als Vollbild-Bildschirmpräsentation (Taste F5) betrachten! Vorlesung Algorithmen und Datenstrukturen, WS10/11, C. Eckert.
Heapsort-Algorithmus
 Präsentation transkript:

Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Teil der 7. VO DAP2 SS 2008 29. April 2008 Petra Mutzel DAP2 SS08 1

Idee von Heap-Sort Elemente im unsortierten Array so verschieben, dass die Heap-Eigenschaft erfüllt ist (CreateHeap) Größtes Element im Heap finden ist einfach  Wurzel = erstes Element im Array Wurzel aus Heap entfernen  Heap-Eigenschaften wiederherstellen (Sifting)

CreateHeap Beobachtung S O R Algorithmus T I N G S O R T I N G Die Heapbedingung ist an den Blättern erfüllt. S 1 O R 2 Algorithmus 3 Betrachte Knoten über den Blättern  repariere Teilheap Bearbeite Baum von unten nach oben  Teilbäume sind immer Heaps T I N G 4 5 6 7 1 2 3 4 5 6 7 S O R T I N G

 CreateHeap S i O R T I N G 2i 2i+1 S O R T I N G procedure CREATEHEAP () { for i := n/2 … 1 { SIFTDOWN (i, n) } } S 1 i procedure SIFTDOWN (i, m) { while Knoten i hat Kinder ≤ m { j := Kind ≤ m mit größerem Wert if A[i] < A[j] then { vertausche A[i] und A[j] i := j } else return } } O R 2 3  T I N G 4 5 6 7 2i 2i+1 1 2 3 4 5 6 7 S O R T I N G

CreateHeap S i O R T I N G 2i 2i+1 S O R T I N G procedure CREATEHEAP () { for i := n/2 … 1 { SIFTDOWN (i, n) } } S 1 i procedure SIFTDOWN (i, m) { while Knoten i hat Kinder ≤ m { j := Kind ≤ m mit größerem Wert if A[i] < A[j] then { vertausche A[i] und A[j] i := j } else return } } O R 2 3 T I N G 4 5 6 7 2i 2i+1 1 2 3 4 5 6 7 S O R T I N G

Heap-Erstellung beendet CreateHeap Heap-Erstellung beendet procedure CREATEHEAP () { for i := n/2 … 1 { SIFTDOWN (i, n) } } i S 1 j procedure SIFTDOWN (i, m) { while Knoten i hat Kinder ≤ m { j := Kind ≤ m mit größerem Wert if A[i] < A[j] then { vertausche A[i] und A[j] i := j } else return } } T R 2 3  O I N G 4 5 6 7 1 2 3 4 5 6 7 S T R O I N G

HeapSort T G S R k O I N T G G T S R O I N G T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } T G 1 S R 2 3 k O I N T G 4 5 6 7 1 2 3 4 5 6 7 G T S R O I N G T

HeapSort S G S O G R k G O I N T S G G S O R O G I N T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } S G 1 S O G R 2 3 k G O I N T 4 5 6 7 1 2 3 4 5 6 7 S G G S O R O G I N T

HeapSort S R N O N R k G I S N T R N S O N R G I N S T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } S R N 1 O N R 2 3 k G I S N T 4 5 6 7 1 2 3 4 5 6 7 R N S O N R G I N S T

HeapSort R I O O I N k G R I S T O I R I O N G R I S T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } R I O 1 O I N 2 3 k G R I S T 4 5 6 7 1 2 3 4 5 6 7 O I R I O N G R I S T

HeapSort G O N I N G k O G R S T N G O I G N G O R S T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } G O N 1 I N G 2 3 k O G R S T 4 5 6 7 1 2 3 4 5 6 7 N G O I G N G O R S T

HeapSort G I N k I G G N O R S T I G N G I N G O R S T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } G I N 1 k I G G N 2 3 O R S T 4 5 6 7 1 2 3 4 5 6 7 I G N G I N G O R S T

HeapSort I G k I G N O R S T I G I G N O R S T procedure HEAPSORT () { CREATEHEAP () for k := n … 2 { vertausche A[1] und A[k] SIFTDOWN (1, k-1) } } I G 1 k I G N 2 3 O R S T 4 5 6 7 1 2 3 4 5 6 7 I G I G N O R S T

Ende der Animation