Upload
mirabel-isambero
View
35
Download
0
Embed Size (px)
DESCRIPTION
Rekurzív algoritmus kupac építésére. Készítette: Krizsai Petra. Feladat. Egy majdnem teljes bináris fa szintfolytonosan a következő számokat tartalmazza: 5, 2, 8, 11, 1, 10, 7, 3, 4, 9, 6, 12 - PowerPoint PPT Presentation
Citation preview
Feladat
Egy majdnem teljes bináris fa szintfolytonosan a következő számokat tartalmazza: 5, 2, 8, 11, 1, 10, 7, 3, 4, 9, 6, 12Ennek a kiinduló állapotnak a rajza mellett mutassuk meg, hogy hogyan működik az a rekurzív algoritmus, amely az elemek cseréjével kupacot alakít ki!
Az algoritmus
KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
KHeap(jobb(t))
Sülly(t)
Sülly(t)
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=balgy(bal(t))≥gy(jobb(t))
ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP
Csere(gy(t), gy(ir(t)))
Sülly(ir(t))
Újra meghívjuk a Kheapet a bal gyerekreEbben (pirossal jelölt) részfában már fennáll a kupac tulajdonság
5
3 4 9 6 12
11 1 10 7
2 8
Meghívjuk a Kheapet a jobb részfára is, majd süllyesztünk, a 9-es irányába
5
3 4 9 6 12
11 1 10 7
2 8
Elértük a jobb és bal gyerekekben a kupactulajdonságot, most még süllyeszteni kell a fa gyökerét
5
3 2 1 6 8
4 9 10
11 12
7
Elértük a jobb és bal gyerekekben a kupactulajdonságot, most még süllyeszteni kell a fa gyökerét
5
3 2 1 6 8
4 9 10
11 12
7
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 9 6 12
11 1 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 1 6 12
11 9 10 7
2 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
5
3 4 1 6 12
2 9 10 7
11 8
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 4 1 6 12
2 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 12
4 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 12
4 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 12
4 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 12
4 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 12
4 9 10 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 10
4 9 12 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 10
4 9 12 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 10
4 9 12 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 10
4 9 12 7
11 8
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 10
4 9 8 7
11 12
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
5
3 2 1 6 8
4 9 10 7
11 12
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
12
3 2 1 6 8
4 9 10 7
11 5
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
12
3 2 1 6 8
4 9 5 7
11 10
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)
Hogyan zajlott le az algoritmus?KHeap(t)
t = Ω
SKIP
KHeap(bal(t))
Sülly(t)
KHeap(jobb(t))
12
3 2 1 6 5
4 9 8 7
11 10
bal(t) = Ω
SKIP
jobb(t) = Ω
ir:=bal gy(bal(t))≥gy(jobb(t))ir:=bal ir := jobb
gy(t) ≥ gy(ir(t))
SKIP Csere(gy(t),gy(ir(t)))Sülly(ir(t))
Sülly(t)