package priorityqueue;

public class MinHeap<T extends Comparable<T>> extends Heap<T> {
	public MinHeap() {
		super();
	}
	
	public MinHeap(int capacity) {
		super(capacity);
	}
	
	public MinHeap(T[] array) {
		super(array);
	}
	
	@Override
	protected boolean less(T k1, T k2) {
		return (k1.compareTo(k2) > 0);
	}

	public static void main(String [] args) {
		Heap<String> h = new MinHeap<String>();
		h.insert("Cecile");
		h.insert("Frederic");
		h.insert("Christophe");
		h.insert("Dominique");
		h.insert("Yolaine");
		h.insert("Marc-Antoine");
		h.insert("Safouan");
		
		System.out.println(h.toString());
		System.out.println();
		while (h.size() > 0) {
			System.out.println("## " + h.removeMax());
			System.out.println(h.toString());
		}
		
		Integer [] data = {9, 6, 1, 5, 2, 4, 3, 7, 8};
		MinHeap<Integer> mh = new MinHeap<Integer>(data);
		data = mh.sort();
		for(Integer i : data) {
			System.out.print(i);
			System.out.print(" ");
		}
	}
}
