Presentation is loading. Please wait.

Presentation is loading. Please wait.

Binary Heaps and Heapsort

Similar presentations


Presentation on theme: "Binary Heaps and Heapsort"— Presentation transcript:

1 Binary Heaps and Heapsort

2 MAX-HEAPIFY MAX-HEAPIFY (A, i) l ← LEFT (i) r ← RIGHT(i)
if l ≤ heap-size[A] and A[l] > A[i] then largest ← l else largest ← i if r ≤ heap-size[A] and A[r]>A[largest] then largest ← r if largest ≠ i then exchange A[i] with A[largest] MAX-HEAPIFY (A, largest)

3 BUILD-HEAP BUILD-HEAP (A) heap-size[A] ← length[A]
for i ← length[A]/2 downto 1 do MAX-HEAPIFY(A, i)

4 BUILD-HEAP Thus, the running time is 2n = O(n) The number of
nodes at height h Multiplied by their height

5 HEAPSORT HEAPSORT (A) BUILD-HEAP(A) for i ← length[A] downto 2
do exchange A[1] with A[i] heap-size[A] ← heap-size[A] - 1 MAX-HEAPIFY(A, 1)

6 Priority Queues HEAP-MAXIMUM (A) 1 return A[1]

7 HEAP-EXTRACT-MAX HEAP-EXTRACT-MAX (A) 1 if heap-size[A] < 1
2 then error “heap underflow” 3 max  A[1] 4 A[1]  A[heap-size[A]] 5 heap-size[A]  heap-size[A] – 1 6 MAX-HEAPIFY (A, 1) 7 return max

8 HEAP-INCREASE-KEY HEAP-INCREASE-KEY(A, i, key) 1 if key < A[i]
then error “new key smaller than current” 3 A[i]  key 4 while i > 1 and A[PARENT(i) < A[i] 5 do exchange A[i]  A[PARENT(i)] 6 i  PARENT(i)

9 MAX-HEAP-INSERT MAX-HEAP-INSERT (A, key)
1 heap-size[A]  heap-size[A] + 1 2 A[heap-size[A]]  - 3 HEAP-INCREASE-KEY(A, heap-size[A], key)


Download ppt "Binary Heaps and Heapsort"

Similar presentations


Ads by Google