fn heapSiftDown(nodes: []Node, heap: []Node.Index, start: usize) void 1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090 fn heapSiftDown(nodes: []Node, heap: []Node.Index, start: usize) void {
var i = start;
while (true) {
var min = i;
const l = i * 2 + 1;
const r = l + 1;
min = if (l < heap.len and nodes[heap[l]].smaller(nodes[heap[min]])) l else min;
min = if (r < heap.len and nodes[heap[r]].smaller(nodes[heap[min]])) r else min;
if (i == min) break;
mem.swap(Node.Index, &heap[i], &heap[min]);
i = min;
}
}