dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
use crate::counting_argsort::argsort;

pub fn counting_sort(a: &[usize]) -> Vec<usize> {
    argsort(a.to_vec()).into_iter().map(|i| a[i]).collect()
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let a = vec![3, 3, 0, 2, 1];

        assert_eq!(counting_sort(&a), [0, 1, 2, 3, 3]);

        let a = vec![4, 3, 1, 6, 0, 6, 3];

        let mut b = a.clone();

        b.sort();

        assert_eq!(counting_sort(&a), b);
    }
}