Я работаю над реализацией MinHeap для школы, и я столкнулся с проблемой. Код обычно хорошо работает, но иногда генерирует исключение из диапазона исключений из моего метода heapify. Я попытался изолировать проблему, но я ужасный отладчик.Реализация MinHeap в C#
Вот мой код функции:
private void Heapify(int i)
{
int least;
int leftchild = 2 * (i + 1) - 1;
int rightchild = 2 * (i + 1);
if (leftchild < heap.Count && (heap[rightchild].CompareTo(heap[i]) < 0))
{
least = 1;
}
else
{
least = i;
}
if (rightchild < heap.Count && (heap[rightchild].CompareTo(heap[least]) < 0))
{
least = rightchild;
}
if (least != i)
{
T temp = heap[i];
heap[i] = heap[least];
heap[least] = temp;
this.Heapify(least);
}