Basic Operations
1. create_heap(H): create a data structure: H
2. insert_heap(i, H): insert a value (element) i to H
3. remove_heap_top_element(H): get the top element in H (the min. value) and remove it from H
4. update_heap(i, H): change the value of element i in H
Internally, we need to update the heap if we insert or remove element from heap. But the
operations for the updates need O(log n) time.
e.g. Remove 7