#排序 #排列

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 · Rust 包仓库 733/week @ 2024-03-13 · Rust 包仓库 864/week @ 2024-03-20 · Rust 包仓库 552/week @ 2024-03-27 · Rust 包仓库 514/week @ 2024-04-03 · Rust 包仓库 661/week @ 2024-04-10 · Rust 包仓库 297/week @ 2024-04-17 · Rust 包仓库 166/week @ 2024-04-24 · Rust 包仓库 211/week @ 2024-05-01 · Rust 包仓库 193/week @ 2024-05-08 · Rust 包仓库 201/week @ 2024-05-15 · Rust 包仓库 403/week @ 2024-05-22 · Rust 包仓库 338/week @ 2024-05-29 · Rust 包仓库 209/week @ 2024-06-05 · Rust 包仓库 179/week @ 2024-06-12 · Rust 包仓库 161/week @ 2024-06-19 · Rust 包仓库 184/week @ 2024-06-26 · Rust 包仓库

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许可证中定义的您的工作的贡献,都将根据上述条款双许可,无需任何附加条款或条件。

无运行时依赖项