
I found myself wanting to learn a bit more about Heaps so I built one in C#. 
Array backed storage, O(log(n)) inserts and removals, (O(1)) to get the min/max value. 
It can be a Min- or a Max-Heap, and it accepts any type as long as that type is IComparable.