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}