what is heap
1.An Array visualized as a nearly complete binary tree
2.Heap as a Tree
- root of tree: first element (i=1)
- parent(i) = i/2
- left(i) = 2i ; right(i) = 2i+1
3.Max-Heap (Min-Heap)
- the key of a node is >= the keys of its children
heap operations
1. build max_heap from an unsorted array
convert A[1...n] into a max-heap
Build-max-heap(A):
for i = n/2 downto 1
do max_heapify(A,i)
complexity: O(n)
2. max_heapify: correct a single violation of the heap propertity in a subtree’s root
heap sort
1.build-max-heap from unsorted array O(n)
loop 1.to(n):
2.find max element A[1]
3.swap elements A[n] with A[1] now max element is at the end of array
4.discard node n from heap - decrease heap-size
5.new root may violate max-heap but children are max-heaps,
do max_heapify(A,1) and jump to step 2 O(logn)
complexity: O(nlogn)