dsalgo/
argsort.rs

1pub fn argsort<T: Ord>(a: &[T]) -> Vec<usize> {
2    let mut idx: Vec<usize> = (0..a.len()).collect();
3
4    idx.sort_by_key(|&i| &a[i]);
5
6    idx
7}
8
9#[cfg(test)]
10
11mod tests {
12
13    use super::*;
14
15    #[test]
16
17    fn test() {
18        let a = vec![3, -1, 0, 5];
19
20        assert_eq!(argsort(&a), [1, 2, 0, 3]);
21    }
22}