????? ??????? - Heap - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

????? ??????? - Heap

Description:

- Heap : : Make_heap - n ... – PowerPoint PPT presentation

Number of Views:75
Avg rating:3.0/5.0
Slides: 17
Provided by: amir84
Category:
Tags: heap | sort

less

Transcript and Presenter's Notes

Title: ????? ??????? - Heap


1
????? ??????? - Heap
  • ?????
  • ???? ?????? ???????? ???? ??????? ?????
  • Make_heap ????? ????? ?- n ?????? ?????.
  • Insert(x) ????? ???? x ??????.
  • Find_min ????? ????????.
  • Del_min ????? ???????? ???????.
  • 2. ???????
  • ??? ????????, ???? ????? (heap sort)...
  • 3. ???????
  • ?. ?? ????? ????? ?? ????? ???????? ???????
    ??????/?????.
  • ?. ?? ???? ??? ????? ?"? ????
  • ????? ?"? ??

2
  • ?. ????? ????? ??? ????? ?????
  • Make_heap ???? ??? ?? ?? n ???????
    O(nlogn)
  • Insert(x) ???? ?? x ???, ?? ???? ???? ??
    ????????. O(logn)
  • Find_min ???? ?? ???? ?????? ?"? ??????
    ????????. O(1)
  • Del_min ???? ?? ???????? ???? ???? ???????
    ???. O(logn)
  • ????? ????? ??? ???? ??? ???? ?? ????????
    Make_heap ?- O(n).

3
?? ???? ??? ?? ??? ?? ?????? ?? ??? ???? ?????
????? ??? ????, ??? ????? ??? ????? ???. ?? ????
??? ?? ??? ??? ????? (????) ?????
???????. ????? ?? ?????? ????? ?????
??????? ????. ???? ??????? ??? ????????.
4
  • ?????? ?? ?? ???? ???
  • ?? ???? ?????? ??? ??? n, ?????? ?? ??? ??? h,
    ??????
  • ???? .
  • ???? ????? ??? ???? , ????? ??????
    ???????? .
  • ?????? ????? ???? 1.
  • ???? ???? i ?????? ??? ?????? ??? 2i ????
    ????? 2i1. ??? ???? ??? ?? ????? ??"? ?? ??
    ?????? ????.
  • ???? ???? i ??????? ?? ???? ??? .
  • ???? ?????? ??? ??? ?????? n. ???? ??? ??????
    ???? ?? ??????? n1.
  • ???? i ??? ??? ??"? 2i gt n.

5
?. ????? ????? ??? ???? ??? ?????
????? ??? ?????? ????? ??????
(???????) ?? ?? ???? ?????. ?????? ?????
????? (?? ???? ??? ?? ???? ??????? ??????). -
???????? ?? ?????? ????? ????????? ?? ??????
?????. - ???? ????? ??? ??? ????? ?- O(1). -
???? ???? ?????? ?????? ?????? ???? ???? ????
?????. - ????? ?? ?? ???? ??????? ??? ??????
(???? ??????? ?????). Make_heap ????? ?? n
??????? ?????. ????? ?? ?? ?????? ????????
??????? ?? ????? (????? ???????? ?? ?-
0) ????? Sift_Down ??? ????. Insert(x) ????
??? ????? ????? ????? ?????? ?? ?????, ????? ???
?? ???? Sift_Up ????? ?????? ??? ?????? ???? ??
?????. Del_min ????? ?? ?????? ??? ????? ????
??????. ???? ?? ???? ????? Sift_Down ???
??????. Find_min ?? ?????? ?? ???? ?? ?????
(?????? 0).
0 2 3 4 6 12 10 17 5 8
O(n)
logn
logn
O(1)
6
Make heap
7
Insert
8
Del_min
9
?. ????? ????? ??? ???? ??? ?????
????? ??? ?????? ?? ??????
????? ?? ????? ???? ?????? ???. - ????? ?????
????? ?????? ?- O(logn). ??? ???????? ??????
??????? ??????? ?"? ????? Make_heap ????? ??
?????? ???????? ???? postorder (??? ????? ??????
???? ??????). Insert(x) ????? ????? ??????
????? ?"? ?????? ???? ?????? ?- O(logn) ????
???? ?? ????? ???? ???? ???? ?????, ??? ?? ????
?????. Del_min ????? ?? ?????? ??? ????? ????
?????? ??????? ??????.
10
???? ???? ?? ???? ??? ?????? ?"? ?? ??????. ???
?????? ???? ??? ??? ?????? i ? ????? ?????
?? ?????? ??????? ?? ??????? ???? ?????? i. ????
91001. ???? ?????? ????? ??? ????? ???
??? ??? ?????? ??????? ??? ????? ???? ???? 0 ???
?????, ???? 1 ??? ?????.
11
??????
?? ???? ??? (????? ?? ??) ?? ????? ?????
O(n) O(nlogn) Make_heap
O(logn) O(logn) Insert(x)
O(1) O(1) Find_min
O(logn) O(logn) Del_min
12
  • ????? 1
  • ????? ????? ?????? ?? ?????? ?????? ????? ?? ???
    ??????. ?? ???? ?? ??????? ?????
  • init ????? ???? ??????? ?- O(m), m ????
    ??????? ??????.
  • insert(x) ???? ?? x ????? ?- O(logn), n ????
    ??????? ?????.
  • find_mid ???? ?? ??? ?????? ?- O(1).
  • del_mid ???? ?? ?????? ?????? ?- O(logn).
  • ????? ????? ??????? ????? ??????? ??
    ??????? ??????? ?? ??????? ??????
  • L S

13
????? ????? ??????? ????? ??????? ??
??????? ??????? ?? ???????
?????? lL sS Init
??? ?????? ???? ??? ???? ?- O(m) ?? ??????? ????
?????? ????? ???????/????? ???????.
???? ??? ???? make_heap ??? ?????.
O(m)2O(m/2)O(m). ?find_mid - ???? ?? ??? ?????
?????? ?????? L, O(1). insert(x) ?? x ???
???????, ????? ???? ?- S, ???? ?- L. ????? ??
???? ??????. ?? SL1 ????? ??
????? ?? S ?- L. ?? SL -2
????? ?? ????? ?? L ?- S. ?del_mid ???? ??
????? ?? L. ?? SL1 ????? ?? ????? ?? S ?-
L. ??? ??????? ???????? ????? ?????
.
14
  • ????? 2
  • ??? ???? ?????? ?????? ????? ??????? ?????
    ????????? ??????
  • init ????? ???? ??????? O(n).
  • insert(x) ???? ?? x ????? O(logn).
  • find_min ???? ?? ???????? O(1).
  • find_max ???? ?? ???????? O(1).
  • del_min ???? ?? ???????? ?????? O(logn).
  • del_max ???? ?? ???????? ?????? O(logn).
  • ?????
  • ????? ?? ??????? ???? ????? ?? ????? ?????
    ??????? ?????? ???????. ??? ?? ??? ??????
    "??????" ???? ??????? ???? ??????? ??????.

15
  • del_min
  • ???? ?? ????? ?? ????? ???????? ??? ????? ?"????"
    ?????? ????????.
  • ?????
  • ????? ????? ?? ???? ????? ??? ??? ??? ??????
    ?????.
  • ???? ?????? ??? ???????
  • ??????? ???? ???? ???? ??????
  • ?????? ?? ???? ??????
  • ?????? Sift_Up ?????? ?????? ?? ????? ?????.

16
8
????? 2 ????? ??? ????? ?? ??????? ??????
???????. ??? ???? ???? ??? ???? max, ?????? ??
???? ???????? ??? ??? ?? ????? (???? ?????
????). init ??? Make_Heap ???"? ????
Postorder ?????? ???? ?- max. O(n). insert(x)
???? ?? x ?????? ????? ?? ???? max ?????? ?????
?? ?????. O(logn). find_min ???? ?? ??? ?????.
O(1). find_max ???? ?? ??? max ?? ?????.
O(1). del_min ???? ?? ?????. ???? ?? ???? max
????? 2 ??????? ?????? ?????
?????? (?? ?????) ?? ?????,
??????? ?? ?- Sift_Down ?????? ????.
O(logn). del_max ???? ?? ????
???????? ?? ?????? ??? ?? ??? ??? ???????? ??
????? ????. ??? ???? ???? ??
?"? ?????? ?? ???? ??????, ?- Sift_Up. ?????
???? ?- max ????? 2 ???????.
O(logn).
1
8
6
5
3
8
4
6
8
4
6
Write a Comment
User Comments (0)
About PowerShow.com