private void maxHeapify(Heap heap, int i) { int leftIndex = heap.GetLeftIndex(i); int rightIndex = heap.GetRightIndex(i); int indexOfLargestItem = -1; if (leftIndex < heap.HeapSize && heap[leftIndex] > heap[i]) { indexOfLargestItem = leftIndex; } else { indexOfLargestItem = i; } if (rightIndex < heap.HeapSize && heap[rightIndex] > heap[indexOfLargestItem]) { indexOfLargestItem = rightIndex; } if (indexOfLargestItem != i) { heap.Swap(i, indexOfLargestItem); maxHeapify(heap, indexOfLargestItem); } }