#排序 #排列

co_sort

根据排列对数组进行排序

4个版本

0.2.0 2019年2月28日
0.1.2 2019年2月28日
0.1.1 2019年2月28日
0.1.0 2019年2月28日

#1942算法

Download history 733/week @ 2024-03-13 864/week @ 2024-03-20 552/week @ 2024-03-27 514/week @ 2024-04-03 661/week @ 2024-04-10 297/week @ 2024-04-17 166/week @ 2024-04-24 211/week @ 2024-05-01 193/week @ 2024-05-08 201/week @ 2024-05-15 403/week @ 2024-05-22 338/week @ 2024-05-29 209/week @ 2024-06-05 179/week @ 2024-06-12 161/week @ 2024-06-19 184/week @ 2024-06-26

862 每月下载量
9 个crate中使用了(直接使用2个)

MIT/Apache

14KB
206

co_sort

根据排列对多个数组进行排序。

LICENSE LICENSE Crates.io Documentation

使用此crate的最简单方法是co_sort!宏,它将对第一个数组进行排序,并按顺序交换其他数组的元素以模拟第一个数组中的更改。
当您有多个具有隐式关系的切片时很有用。

#[macro_use] extern crate co_sort;
use co_sort::*;
let mut names = ["Diego", "Maia", "Luciana", "Bruno", "Astrid", "Thierry"];
let mut ages =  [  73,      88,      21,        47,      4,        62    ];
// We want to sort the names but keep the ages synced
co_sort![names, ages];
assert_eq!(names, ["Astrid", "Bruno", "Diego", "Luciana", "Maia", "Thierry"]);
assert_eq!(ages,  [   4,       47,      73,       21,       88,      62    ]);

如果您想要更多控制,可以使用co_sort和co_sort_stable函数,宏内部使用co_sort。
co_sort_stable分配O(n)内存,并要求类型实现Clone,而co_sort是原地排序且不需要任何特例。
在性能方面,co_sort的扩展性与数组数量成正比,但与数组大小无关,而co_sort_stable则相反。

# use co_sort::*;
let mut names = ["Diego", "Maia", "Luciana", "Bruno", "Astrid", "Thierry"];
let mut ages =  [  73,      88,      21,       47,       4,        62    ];
let permutation = Permutation::from(names.as_ref());
permutation.co_sort((names.as_mut(), ages.as_mut()));
// or permutation.co_sort_stable((names.as_mut(), ages.as_mut()));
assert_eq!(names, ["Astrid", "Bruno", "Diego", "Luciana", "Maia", "Thierry"]);
assert_eq!(ages,  [   4,       47,      73,       21,       88,      62    ]);

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则任何有意提交给作品作为Apache-2.0许可证中定义的您的工作的贡献,都将根据上述条款双许可,无需任何附加条款或条件。

无运行时依赖项