public void Insert(Node node, int priority) { if (node == null) { return; } if (HeapContainsNode(node)) { return; } if (size + 1 == heap.Length) { DoubleArray(); } PriorityNode n = new PriorityNode(node, priority); int hole = ++size; heap[0] = n; for (; n.priority < heap[hole / 2].priority; hole /= 2) { heap[hole] = heap[hole / 2]; } heap[hole] = n; }
private void DoubleArray() { PriorityNode[] temp = new PriorityNode[heap.Length * 2]; for (int i = 1; i < heap.Length; i++) { temp[i] = heap[i]; } heap = temp; }