12-02-2010, 15:21
|
|
|
חבר מתאריך: 30.10.09
הודעות: 106
|
|
נמצא פתרון לשאלה...
בכדי לשמור על תכונות ערימה נשתמש בכל הכנסה בפעולה heapify שרצה בזמן log(N), פעולה זאת אחראית על "פעפוע" האיבר למקום המתאים לו בערימה.
כאשר נכניס N איברים לערימה הסיבוכיות תהייה nlog(n), בכדי להגיע לסיבוכיות o(n) עלינו "לבטל" את הפעולה heapify שרצה בזמן log(N) ע"י זה שנמצא מקרה פרטי שלא יצטרך להשתמש בפעולה זאת ועדיין לשמור על תכונות הערימה.
מקרה פרטי זה יקרה מתי שנרצה לחבר ערימה שכל האיברים בה קטנים\גדולים (תלוי אם זה ערימת מינימום או מקסימום) מהאיברים בערימה השניה ואז כל הכנסה תתבצע בזמן o(1) ללא שימוש בפעולת heapify.
|