В .NET Framework в PresentationCore.dll существует общий класс PriorityQueue<T>, код которого можно найти здесь.
Я написал короткую программу для проверки сортировки, и результаты были невелики:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using MS.Internal;
namespace ConsoleTest {
    public static class ConsoleTest {
        public static void Main() {
            PriorityQueue<int> values = new PriorityQueue<int>(6, Comparer<int>.Default);
            Random random = new Random(88);
            for (int i = 0; i < 6; i++)
                values.Push(random.Next(0, 10000000));
            int lastValue = int.MinValue;
            int temp;
            while (values.Count != 0) {
                temp = values.Top;
                values.Pop();
                if (temp >= lastValue)
                    lastValue = temp;
                else
                    Console.WriteLine("found sorting error");
                Console.WriteLine(temp);
            }
            Console.ReadLine();
        }
    }
}
Результаты:
2789658
3411390
4618917
6996709
found sorting error
6381637
9367782
Существует ошибка сортировки, и если размер выборки увеличивается, количество ошибок сортировки увеличивается несколько пропорционально.
Я сделал что-то не так? Если нет, то где ошибка в коде класса PriorityQueue, который находится точно?
