ncollide3d/utils/
median.rs

1use na::{self, RealField};
2
3/// Computes the median of a set of values.
4#[inline]
5pub fn median<N: RealField + Copy>(vals: &mut [N]) -> N {
6    assert!(vals.len() > 0, "Cannot compute the median of zero values.");
7
8    vals.sort_by(|a, b| a.partial_cmp(b).unwrap());
9
10    let n = vals.len();
11
12    if n % 2 == 0 {
13        (vals[n / 2 - 1] + vals[n / 2]) / na::convert(2.0)
14    } else {
15        vals[n / 2]
16    }
17}