1 / 49

Rekurzív algoritmus kupac építésére

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

Télécharger la présentation

Rekurzív algoritmus kupac építésére

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rekurzív algoritmus kupac építésére Készítette: Krizsai Petra

  2. 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 Ennek 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!

  3. Az algoritmus Sülly(t) KHeap(t) bal(t) = Ω t = Ω S K I P KHeap(bal(t)) S K I P jobb(t) = Ω KHeap(jobb(t)) ir:=bal gy(bal(t))≥gy(jobb(t)) Sülly(t) ir:=bal ir := jobb gy(t) ≥ gy(ir(t)) S K I P Csere(gy(t), gy(ir(t))) Sülly(ir(t))

  4. A fa ábrázolása 5 8 2 11 1 10 7 3 4 9 6 12

  5. Meghívjuk a KHeapet először a gyökér bal gyerekére 5 8 2 11 1 10 7 3 4 9 6 12

  6. Újra meghívjuk a Kheapet a bal gyerekreEbben (pirossal jelölt) részfában már fennáll a kupac tulajdonság 5 8 2 11 1 10 7 3 4 9 6 12

  7. Meghívjuk a Kheapet a jobb részfára is, majd süllyesztünk, a 9-es irányába 5 8 2 11 1 10 7 3 4 9 6 12

  8. A süllyesztés után helyreállt a kupactulajdonság ebben a részfában is 5 8 2 11 9 10 7 3 4 1 6 12

  9. Most újra süllyesztünk, a 2-est 5 8 2 11 9 10 7 3 4 1 6 12

  10. Csere(2, 11) után 5 8 11 2 9 10 7 3 4 1 6 12

  11. Csere(2, 4) után elértük hogy az eredeti fa balgyereke is kupac legyen 5 8 11 4 9 10 7 3 2 1 6 12

  12. Most meghívjuk a Kheapet az eredeti fa jobb gyerekére 5 8 11 4 9 10 7 3 2 1 6 12

  13. A pirossal jelölt részfára újra meghívjuk a Kheap-et, majd süllyesztünk 5 8 11 4 9 10 7 3 2 1 6 12

  14. Elértük a kupactulajdonságot ebben a részfában 5 8 11 4 9 12 7 3 2 1 6 10

  15. A 7-esre meghívjuk a Kheap-et, ennek se bal, se jobb gyereke nincs 5 8 11 4 9 12 7 3 2 1 6 10

  16. Most a részfa gyökerét süllyesszük 5 8 11 4 9 12 7 3 2 1 6 10

  17. Most a részfa gyökerét süllyesszük 5 12 11 4 9 8 7 3 2 1 6 10

  18. Most a részfa gyökerét süllyesszük 5 12 11 4 9 10 7 3 2 1 6 8

  19. Elértük a jobb és bal gyerekekben a kupactulajdonságot, most még süllyeszteni kell a fa gyökerét 5 12 11 4 9 10 7 3 2 1 6 8

  20. Elértük a jobb és bal gyerekekben a kupactulajdonságot, most még süllyeszteni kell a fa gyökerét 5 12 11 4 9 10 7 3 2 1 6 8

  21. Süllyesztés 12 5 11 4 9 10 7 3 2 1 6 8

  22. Süllyesztés 12 10 11 4 9 5 7 3 2 1 6 8

  23. Elértük, hogy a fa kupac legyen 12 10 11 4 9 8 7 3 2 1 6 5

  24. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  25. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  26. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  27. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  28. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  29. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  30. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  31. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 1 10 7 bal(t) = Ω 9 6 12 3 4 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))

  32. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 2 8 Sülly(t) 11 9 10 7 bal(t) = Ω 1 6 12 3 4 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))

  33. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 2 9 10 7 bal(t) = Ω 1 6 12 3 4 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))

  34. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 2 9 10 7 bal(t) = Ω 1 6 12 3 4 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))

  35. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 12 3 2 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))

  36. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 12 3 2 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))

  37. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 12 3 2 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))

  38. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 12 3 2 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))

  39. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 12 3 2 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))

  40. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 12 7 bal(t) = Ω 1 6 10 3 2 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))

  41. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 12 7 bal(t) = Ω 1 6 10 3 2 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))

  42. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 12 7 bal(t) = Ω 1 6 10 3 2 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))

  43. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 8 Sülly(t) 4 9 12 7 bal(t) = Ω 1 6 10 3 2 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))

  44. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 12 Sülly(t) 4 9 8 7 bal(t) = Ω 1 6 10 3 2 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))

  45. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 5 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 12 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 8 3 2 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))

  46. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 12 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 5 Sülly(t) 4 9 10 7 bal(t) = Ω 1 6 8 3 2 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))

  47. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 12 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 10 Sülly(t) 4 9 5 7 bal(t) = Ω 1 6 8 3 2 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))

  48. Hogyan zajlott le az algoritmus? KHeap(t) t = Ω 12 S K I P KHeap(bal(t)) KHeap(jobb(t)) Sülly(t) 11 10 Sülly(t) 4 9 8 7 bal(t) = Ω 1 6 5 3 2 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))

  49. Vége

More Related