private void Allocate() { int newCapacity = (int)(_array.Length * _increaseSizeFactor); MinHeapNode <T>[] newArray = new MinHeapNode <T> [newCapacity]; Array.Copy(_array, newArray, _array.Length); int lastCapacity = _array.Length; _array = newArray; InitRange(lastCapacity, _array.Length); }
public T ExtractMin() { if (_count < 0) { throw new ArgumentOutOfRangeException(); } MinHeapNode <T> min = _array[0]; _array[0] = _array[_count - 1]; RemoveLast(); MinHeapify(0); return(min.Data); }