14
1 Petra Mutzel DAP2 SS08 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 1 Petra Mutzel DAP2 SS08

1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

Embed Size (px)

Citation preview

Page 1: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

1Petra Mutzel DAP2 SS08

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

1Petra Mutzel DAP2 SS08

Page 2: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

2Petra Mutzel DAP2 SS08

Idee von Heap-SortElemente im unsortierten Array so verschieben,

dass die Heap-Eigenschaft erfüllt ist (CreateHeap)

Wurzel aus Heap entfernen

Heap-Eigenschaften wiederherstellen (Sifting)

Größtes Element im Heap finden ist einfach

Wurzel = erstes Element im Array

Page 3: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

3Petra Mutzel DAP2 SS08

4

Betrachte Knoten über den Blättern repariere Teilheap

Bearbeite Baum von unten nach oben Teilbäume sind immer Heaps

CreateHeap

1

2 3

5 6 7

S

R

T I N G

Die Heapbedingung ist

an den Blättern erfüllt.

Beobachtung

Algorithmus O

1 2 3 4 5 6 7

S O IR T N G

Page 4: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

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

} }

4

CreateHeap

1

2 3

5 6 7

S

O R

T I N G

procedure CREATEHEAP () { for i := n/2 … 1 {

SIFTDOWN (i, n)} } i

2i 2i+1

1 2 3 4 5 6 7

S O IR T N G

Page 5: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

i

2i 2i+1

4

CreateHeap

1

2 3

5 6 7

S

O R

T I N G

1 2 3 4 5 6 7

S O IR T N G

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

} }

procedure CREATEHEAP () { for i := n/2 … 1 {

SIFTDOWN (i, n)} }

Page 6: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

4

CreateHeap

1

2 3

5 6 7

S

T R

O I N G

i

1 2 3 4 5 6 7

S T IR O N G

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

} }

procedure CREATEHEAP () { for i := n/2 … 1 {

SIFTDOWN (i, n)} }

Heap-Erstellung beendet

Page 7: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

7Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

T

S R

O I N G

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

1 2 3 4 5 6 7

T S IR O N G

k

G

T

TG

Page 8: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

8Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

G

S R

O I N T

1 2 3 4 5 6 7

G S IR O N T

k

S

GO

G

S G GO

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 9: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

9Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

S

O R

G I N T

1 2 3 4 5 6 7

S O IR G N T

kS

N

N S

R

R

N

N

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 10: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

10Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

R

O N

G I S T

1 2 3 4 5 6 7

R O IN G S T

k

I

R

RI

O

I

IO

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 11: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

11Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

O

I N

G R S T

1 2 3 4 5 6 7

O I RN G S T

k

G

O

OG

N

G

N G

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 12: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

12Petra Mutzel DAP2 SS08

HeapSort

1

2 3

5 6 7

N

I G

O R S T

1 2 3 4 5 6 7

N I RG O S T

k

N

G

NG

I

G

I G

4

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 13: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

13Petra Mutzel DAP2 SS08

4

HeapSort

1

2 3

5 6 7

I

G N

O R S T

1 2 3 4 5 6 7

I G RN O S T

k

I

G

IG

procedure HEAPSORT () {

CREATEHEAP ()

for k := n … 2 {

vertausche A[1] und A[k]

SIFTDOWN (1, k-1)

} }

Page 14: 1Petra Mutzel DAP2 SS08 Beispielanimation Heap-Sort Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund

14Petra Mutzel DAP2 SS08

Ende der Animation