| פעולה | סיבוכיות |
|---|---|
| FindMin | \(O(1)\) |
| DeleteMin | \(O(\log n)\) |
| Insert | \(O(\log n)\) |
| DecreaseKey | \(O(\log n)\) |
| מקום | מערך בגודל \(N\) + משתנה גודל \(O(N)\) |
עדיין לא הראינו איך לבנות Heap מ-\(N\) איברים נתונים. שתי אפשרויות:
NaïveBuildHeap(A, n):
הקצה מערך B בגודל n
for i = 1 to n:
Insert(B, i, A[i]) // PercUp בכל הכנסה
for i = 1 to n:
A[i] = B[i]
BuildHeap(A):
n ← length(A)
for i = ⌊n/2⌋ downto 1:
PercDown(i, A[i], n, A)
בסיס (\(i = \lfloor n/2 \rfloor + 1\)): \(A[i..n]\) מכיל רק עלים — מקיים את התכונה ריק.
הנחה: אחרי טיפול ב-\(A[i+1]\), \(A[(i+1)..n]\) מקיים תכונת Heap.
צעד: עבור \(i \leq \lfloor n/2 \rfloor\), לפי הנחת האינדוקציה רק \(A[i]\) עצמו עלול לא לקיים את התכונה. אחרי PercDown(i), הוא מתוקן ⟹ \(A[i..n]\) מקיים תכונת Heap. ✓
נניח עץ בינארי שלם בגובה \(k\): \(N = 2^{k+1} - 1\) איברים.
| רמה | צעדים | מספר איברים |
|---|---|---|
| 0 (שורש) | \(k\) | 1 |
| 1 | \(k-1\) | 2 |
| \(i\) | \(k-i\) | \(2^i\) |
| \(k\) (עלים) | 0 | \(2^k\) |
הטור \(\sum i/2^i\) הוא טור הנדסי-אריתמטי מתכנס. ניתן להראות: