#tournament #sorting #merge #tree #kway

tournament-kway

使用锦标赛树实现k路归并

1个不稳定版本

0.1.0 2022年4月22日

#1810 in 数据结构

MIT/Apache

17KB
402

tournament

使用二叉堆实现一个k路归并迭代器。当给定k个有序数据集时,k路归并迭代器非常有用,您希望在集合之间以高效的方式找到n个最大元素,而不需要对整个数据集进行排序。

想象一下有数十个包含数百个元素的切片,而你只关心前10个。

use tournament::Tournament;

let t = Tournament::from_iters_min([(1..2000), (1..20000), (1..5000000)]);
assert_eq!(t.take(5).collect::<Vec<_>>(), [1, 1, 1, 2, 2]);

许可证:MIT OR Apache-2.0


lib.rs:

使用二叉堆实现一个k路归并迭代器。当给定k个有序数据集时,k路归并迭代器非常有用,您希望在集合之间以高效的方式找到n个最大元素,而不需要对整个数据集进行排序。

想象一下有数十个包含数百个元素的切片,而你只关心前10个。

use tournament_kway::Tournament;

let t = Tournament::from_iters_min([(1..2000), (1..20000), (1..5000000)]);
assert_eq!(t.take(5).collect::<Vec<_>>(), [1, 1, 1, 2, 2]);

依赖项

~97KB