public void BubbleDown (GraphNode node) {
//int bubbleIndex = node.heapIndex;
int bubbleIndex = 0;
if (bubbleIndex < 1 || bubbleIndex > numberOfItems) {
Debug.LogError ("Node is not in the heap (index "+bubbleIndex+")");
Add (node);
return;
}
while (bubbleIndex != 1) {
int parentIndex = bubbleIndex / 2;
/* Can be optimized to use 'node' instead of 'binaryHeap[bubbleIndex]' */
if (binaryHeap[bubbleIndex].f <= binaryHeap[parentIndex].f) {
GraphNode tmpValue = binaryHeap[parentIndex];
binaryHeap[parentIndex] = binaryHeap[bubbleIndex];
binaryHeap[bubbleIndex] = tmpValue;
//binaryHeap[parentIndex].heapIndex = parentIndex;
//binaryHeap[bubbleIndex].heapIndex = bubbleIndex;
bubbleIndex = parentIndex;
} else {
return;
}
}
}