eratosthenes/statistics/
median.rs

1pub fn median(array: &mut [f64]) -> f64 {
2    if array.is_empty() { panic!("Cannot compute the median of an empty vector") };
3
4    array.sort_by(|a, b| a.partial_cmp(b).unwrap());
5
6    let mid = array.len() / 2;
7
8    if array.len() % 2 == 0 {
9        (array[mid - 1] + array[mid]) / 2.0
10    } else {
11        array[mid]
12    }
13}
14
15#[cfg(test)]
16mod tests {
17
18    use super::*;
19
20    #[test]
21    fn median_test() {
22        assert_eq!(median(&mut vec![1.0, 2.0, 2.0, 3.0, 1.0]), 2.0);
23    }
24}