package com.interview.basics.sort;
import com.interview.basics.model.collection.heap.BinaryArrayHeap;
public class HeapSorter<T extends Comparable<T>> extends Sorter<T>{
//use min head or max head, up=true is max head.
public boolean up = true;
public T[] sort(T[] input) {
BinaryArrayHeap<T> heap;
if (up) heap = new BinaryArrayHeap<>(BinaryArrayHeap.MAX_HEAD);
else heap = new BinaryArrayHeap<>(BinaryArrayHeap.MIN_HEAD);
int N = input.length;
for (int i = 0; i < N; i++) heap.add(input[i]);
for (int i = 0; i < N; i++)
input[i] = heap.pollHead();
return input;
}
}