Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
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 April 2008 Petra Mutzel DAP2 SS08 1
2
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)
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
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
11
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
12
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
13
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
14
Ende der Animation
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.