You might like IntervalHeap from the C5 Generic Collection Library. To quote the user guide
Class
IntervalHeap<T>
implements interfaceIPriorityQueue<T>
using an interval heap stored as an array of pairs. TheFindMin
andFindMax
operations, and the indexer’s get-accessor, take time O(1). TheDeleteMin
,DeleteMax
, Add and Update operations, and the indexer’s set-accessor, take time O(log n). In contrast to an ordinary priority queue, an interval heap offers both minimum and maximum operations with the same efficiency.
The API is simple enough
> var heap = new C5.IntervalHeap<int>();
> heap.Add(10);
> heap.Add(5);
> heap.FindMin();
5