1个不稳定版本
0.1.0 | 2023年6月14日 |
---|
#2355 in 算法
10KB
184 行
NBest
方便地收集N个最高元素,并丢弃其他元素
在实现k近邻等算法时,可以使用 Iterator::collect 来构建[NBest]
use n_best::NBest;
let numbers = vec![9, 2, 4, 6, 8, 1, 3, 5, 7, 0];
let n_best = NBest::with_cmp_fn_and_iter(4, |a, b| b.cmp(a), numbers);
assert_eq!(n_best.into_sorted_vec(), vec![0, 1, 2, 3]);
未来工作:此实现使用[BinaryHeap],但内部实现会更高效,因为它目前需要为每个保留的元素存储比较函数的副本。
未来工作:探索将N值作为常量参数。这可能更有效,并且它将允许实现[FromIterator]特质。另一方面,类型参数比在运行时传递的参数更难处理。
依赖项
~5KB