1. Prove or show that the worst case time of the extraction operation on a heap implemented as an array is O(log n).
2. Prove or show that the insertion and extraction operations on a heap implemented as a Python list is O(n) in the worst case. Also show that each operation has an amortized cost of O(log n).