#compare #sorting #sort-by

n_best

方便地收集N个最高元素,并丢弃其他元素

1个不稳定版本

0.1.0 2023年6月14日

#2355 in 算法

MIT/Apache

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