fn sift_down<T, S>(heap: &mut [T], index: usize, less_than: S)where S: FnMut(&T, &T) -> bool,
Sift down element at index (heap is a min-heap wrt the ordering)
index
heap