in lib/src/priority_queue.dart [412:447]
void _bubbleDown(E element, int index) {
var rightChildIndex = index * 2 + 2;
while (rightChildIndex < _length) {
var leftChildIndex = rightChildIndex - 1;
var leftChild = _elementAt(leftChildIndex);
var rightChild = _elementAt(rightChildIndex);
var comp = comparison(leftChild, rightChild);
int minChildIndex;
E minChild;
if (comp < 0) {
minChild = leftChild;
minChildIndex = leftChildIndex;
} else {
minChild = rightChild;
minChildIndex = rightChildIndex;
}
comp = comparison(element, minChild);
if (comp <= 0) {
_queue[index] = element;
return;
}
_queue[index] = minChild;
index = minChildIndex;
rightChildIndex = index * 2 + 2;
}
var leftChildIndex = rightChildIndex - 1;
if (leftChildIndex < _length) {
var child = _elementAt(leftChildIndex);
var comp = comparison(element, child);
if (comp > 0) {
_queue[index] = child;
index = leftChildIndex;
}
}
_queue[index] = element;
}