Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Beispielanimation Heap-Sort

Ähnliche Präsentationen


Präsentation zum Thema: "Beispielanimation Heap-Sort"—  Präsentation transkript:

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


Herunterladen ppt "Beispielanimation Heap-Sort"

Ähnliche Präsentationen


Google-Anzeigen