Solution: Median



examples/vectors/median/src/main.rs
fn main() {
    let numbers = vec![10, 12, 11];
    println!("{:?}", numbers);
    println!("{}", median(&numbers));
    println!("{:?}", numbers);

    let numbers = vec![10, 12, 13, 11];
    println!("{:?}", numbers);
    println!("{}", median(&numbers));
    println!("{:?}", numbers);
}

fn median(numbers: &[i32]) -> i32 {
    let mut numbers = numbers.to_owned();
    numbers.sort();
    let middle = numbers.len() / 2;
    numbers[middle]
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn check_median() {
        let numbers = vec![10, 12, 11];
        let med = median(&numbers);
        assert_eq!(med, 11);
        assert_eq!(numbers, vec![10, 12, 11]);

        let numbers = vec![10, 12, 13, 11];
        let med = median(&numbers);
        assert_eq!(med, 12);
        assert_eq!(numbers, vec![10, 12, 13, 11]);
    }
}

[10, 12, 11]
11
[10, 12, 11]
[10, 12, 13, 11]
12
[10, 12, 13, 11]