Function order_stat::median_of_medians_by
source · [−]pub fn median_of_medians_by<T, F>(array: &mut [T], cmp: F) -> (usize, &mut T) where
F: FnMut(&T, &T) -> Ordering, Expand description
Calculate an approximate median of array, using the ordering
defined by cmp.
The return value is the index/reference to some value of array
that is guaranteed to lie between the 30th and 70th percentiles of
the values in array. That is, the return value is such that
cmp will return Greater for at most 70% of the elements and
similarly will return Less for at most 70%.
Panics
This panics if array is empty.
Examples
// the numbers 0.0, 1.0, ..., 100.0.
let mut v = (0..101).map(|x| x as f64).rev().collect::<Vec<_>>();
let (_, &mut median) = order_stat::median_of_medians_by(&mut v, |x, y| x.partial_cmp(y).unwrap());
assert!(30.0 <= median);
assert!(median <= 70.0);