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 在 算法 中
862 每月下载量
在 9 个crate中使用了(直接使用2个)
14KB
206 行
co_sort
根据排列对多个数组进行排序。
使用此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 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交给作品作为Apache-2.0许可证中定义的您的工作的贡献,都将根据上述条款双许可,无需任何附加条款或条件。