O(logn) Puts elements from the array into a heap structure in O(nlogn) time Extracts the root of the heap into an array until the heap is empty in O(nlogn) time