1 个不稳定版本
0.1.0 | 2022年6月1日 |
---|
#1763 在 算法 中
9KB
107 代码行
window-sort-iterator
一个在滑动窗口内对项目进行排序的迭代器适配器。
实现
这将在迭代器顶部保持一个滑动窗口内项目的 二叉堆。算法工作原理如下
- 只要窗口未满,就请求从底层迭代器获取元素并将其插入堆中。
- 如果窗口已满,则从堆中弹出下一个排序元素。
- 如果底层迭代器不再产生任何项目,则按顺序从堆中移除剩余元素。
默认情况下,这使用最大堆,结果是最高的项目首先产生。您可以通过使用 std::cmp::Reverse
来使用最小堆。
用法
use window_sort_iterator::WindowSortIterExt;
let a = &[4, 2, 3, 1];
let mut it = a.iter().cloned().window_sort(2);
assert_eq!(Some(4), it.next());
assert_eq!(Some(3), it.next());
assert_eq!(Some(2), it.next());
assert_eq!(Some(1), it.next());
assert_eq!(None, it.next());
许可证
MIT,见 LICENSE。