You might like IntervalHeap from the C5 Generic Collection Library. To quote the user guide
Class IntervalHeap
implements interface IPriorityQueue
using an interval heap stored as an array of pairs. The FindMin
and
FindMax
operations, and the indexer’s get-accessor, take time O(1). The DeleteMin
,
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();
> heap.Add(10);
> heap.Add(5);
> heap.FindMin();
5
Install from Nuget https://www.nuget.org/packages/C5 or GitHub https://github.com/sestoft/C5/