1. Propose an algorithm to insert M nodes into a binary heap on N elements in O(M + log N log log N) time. Prove your time bound.
2. Write a program to take N elements and do the following:
a. Insert them into a heap one by one.
b. Build a heap in linear time.
Compare the running time of both algorithms for sorted, reverse-ordered, and random inputs.