Heap - בנייה

מכיוון שהheap מאוזן ככל האפשר, ולכן כל הרמות מלבד התחתונה ביותר מלאות, וברמה התחתונה, כל האיברים הקיימים נמצאים במקומות השמאליים ביותר, ניתן ליישם אותו במערך: השורש יימצא ב [ARR[1 והעלה האחרון ב [ARR[Last. בכל פעם שנרצה לגשת לבנים של צומת [ARR[i, ניגש ל [ARR[2i ו [ARR[2i + 1.

ראינו שניתן להכניס איבר ל- heap ב- (O(LogN, (ראה הכנסת איבר), בניית heap תהיה:

  1. הקצאת זיכרון, לפי כמות האיברים המקסימלית שאנו רוצים ב- heap.
  2. הכנסת N האיברים בheap, בזה אחר זה.

הסיבוכיות תהיה אם כן: סיבוכיות קבועה להקצאת הזיכרון, והכנסת N איברים בעלות (O(LogN לכל אחד. סך-הכל: (O(LogN * N.

פסאודו-קוד

function HeapMake(Arr)
{
   for i=1 to length(Arr)
      Heap_insert(Arr[i])
}