necessary
operations (swaps and comparisons) until the property is restored by calling heapify.
However, we do not do it immediately. We “forget”, for the time being, the existence
of the root. As a result, we have two independent heaps now, its subtrees. We select
the minimum root of these two at the cost of one comparison and we swap it with the
last element of the heap. So far, two elements have been transferred in the sorted part
of the heap. Now, we have to rebuild the initial heap in order to repeat the same
process for the rest of the elements.