Function merge
pub fn merge<T, F: FnMut(&T, &T) -> bool>(v: &mut [T], scratch: &mut [MaybeUninit<T>], mid: usize, is_less: &mut F)
Merges non-decreasing runs v[..mid] and v[mid..] using scratch as
temporary storage, and stores the result into v[..].