- הגשות
- פתרונות
- פתרון רשמי
- תיאור
נתונה ערימת מינימום.
א. כתבו שגרה למציאת האיבר השישי הקטן ביותר. זמן הריצה הנדרש הוא \(O(1)\).
ב. כתבו שגרה למציאת האיבר המקסימלי בערימה. מספר ההשוואות שהשגרה מבצעת חייב להיות לכל היותר \(\lceil n/2 \rceil\).
ג. כתבו שגרה המדפיסה את \(k\) המספרים הקטנים ביותר בערימה. זמן הריצה הנדרש הוא \(O(k^2)\) ואינו תלוי ב-\(n\). ניתן להרוס את הערימה המקורית, אך אין להשתמש בזיכרון עזר.
ד. ידוע שאיבר מסוים נמצא על המסלול השמאלי ביותר בערימה. בהינתן ערכו, כתבו שגרה המחזירה את האינדקס בו הוא נמצא. זמן הריצה הנדרש הוא \(O(\log \log n)\), ללא שימוש במקום נוסף.
יש להסביר בקצרה את נכונות כל שגרה.
לכל סעיף, חשבו על התכונות הייחודיות של ערימת מינימום. למציאת המקסימום, שקלו את מיקום עלי הערימה. למציאת k האיברים הקטנים, חשבו על שמירת "חזית" של מועמדים. לחיפוש במסלול השמאלי, נצלו את העובדה שהמסלול ממוין.