2个不稳定版本
0.4.0 | 2023年8月25日 |
---|---|
0.3.10 | 2022年12月19日 |
0.2.2 |
|
0.1.6 |
|
在算法中排名1617
每月下载量110
25KB
321 行
Top N集合
此包提供了一种topset,用于选择给定数量的最大元素。用于排序元素的标准可以通过闭包指定。它在内部基于固定大小的二叉堆。
可以直接使用TopSet
结构体,也可以通过TopSetReducing
特质,该特质会自动扩展迭代器特质。
注意:返回的元素未排序。
use topset::TopIter;
fn main()
{
let items = vec![4, 5, 8, 3, 2, 1, 4, 7, 9, 8];
// getting the four greatest integers (repeating allowed)
items.iter().cloned()
.topset(4, i32::gt)
.into_iter()
.for_each(|x| eprintln!("in the top 4: {}", x));
// getting the four smallest integers
// (we just need to reverse the comparison function)
items.topset(4, i32::lt)
.into_iter()
.for_each(|x| eprintln!("in the last 4: {}", x));
}
将产生(可能顺序不同)
in the top 4: 7
in the top 4: 8
in the top 4: 9
in the top 4: 8
in the last 4: 4
in the last 4: 3
in the last 4: 1
in the last 4: 2