//this is in java
import java.util.Comparator;
public class BinaryMinHeap { private ArrayList array; private Comparator comparator; public BinaryMinHeap(int capacity, Comparator comparator) { array = new ArrayList(capacity + 1); array.add(null); // Index zero is unused this.comparator = comparator; } private static final int ROOT = 1; private static int left(int i) { return 2 * i; } private static int right(int i) { return 2 * i + 1; } private static int parent(int i) { return i / 2; } private int minChild(int i) { int leftChild = left(i); int rightChild = right(i); // If both a left and right child exist, // take the smaller of the two. if (rightChild ROOT && comparator.compare(element, array.get(parent(hole))) = 2) { // Determine the child to promote, if needed int minChild = minChild(hole); // Promote elements until it's not needed, // or we reach the bottom of the heap while(minChild minHeap1 = new BinaryMinHeap(7, Comparator.naturalOrder()); minHeap1.add(4); minHeap1.add(7); minHeap1.add(1); minHeap1.add(6); minHeap1.add(2); minHeap1.add(3); minHeap1.add(5); System.out.println(minHeap1.array); BinaryMinHeap minHeap2 = new BinaryMinHeap(7, Comparator.naturalOrder()); minHeap2.add(7); minHeap2.add(1); minHeap2.add(5); minHeap2.add(2); minHeap2.add(3); minHeap2.add(6); minHeap2.add(4); System.out.println(minHeap2.array); BinaryMinHeap minHeap3 = new BinaryMinHeap(9, Comparator.naturalOrder()); minHeap3.add(1); minHeap3.add(2); minHeap3.add(3); minHeap3.add(17); minHeap3.add(19); minHeap3.add(36); minHeap3.add(7); minHeap3.add(25); minHeap3.add(100); System.out.println(minHeap3.array); minHeap3.remove(); System.out.println(minHeap3.array); BinaryMinHeap minHeap4 = new BinaryMinHeap(9, Comparator.naturalOrder()); minHeap4.add(-100); minHeap4.add(-19); minHeap4.add(-36); minHeap4.add(-17); minHeap4.add(-3); minHeap4.add(-25); minHeap4.add(-1); minHeap4.add(-2); minHeap4.add(-7); System.out.println(minHeap4.array); minHeap4.remove(); System.out.println(minHeap4.array); BinaryMinHeap minHeap = new BinaryMinHeap(16, Comparator.naturalOrder()); for (int i = 0; i
please provide the output
4 Heap-Sort Heap-Sort is another tree-based sorting algorithm discussed briefly in lecture. The steps of Heap-Sort are: Fill an initially empty binary min-heap with the elements of the unsorted list. Remove elements one-by-one and add them, in order, to a new array. . Using the implementation of BinaryMinHeap.java from lecture, implement HeapSort. The signature for the method should be public static Object) heapSort (T original, Comparator comp) Write several test cases for Heap-Sort and demonstrate to a TA that they pass