Ejemplo n.º 1
0
        public void Delete(HeapNode node)
        {
            int i = node.GetIndexInHeap();

            if (i < 0 || i > size)
            {
                throw new Exception();
            }
            Swap(i, size - 1);
            size--;
            array[size].SetIndexInHeap(-1);
            if (array[i].GetKey() < array[size].GetKey())
            {
                ShiftDown(i);
            }
            else
            {
                ShiftUp(i);
            }
        }
Ejemplo n.º 2
0
        public void Update(HeapNode node, float newKeyValue)
        {
            int pos = node.GetIndexInHeap();

            if (pos >= size || pos < 0)
            {
                throw new Exception();
            }
            float oldkey = array[pos].GetKey();

            array[pos].SetKey(newKeyValue);
            if (newKeyValue < oldkey)
            {
                ShiftDown(pos);
            }
            else
            {
                ShiftUp(pos);
            }
        }