#algorithm #insert #space-saving #filtered

topk

TopK算法在Rust中的实现

11个版本 (4 个重大变更)

0.5.0 2023年8月24日
0.4.0 2023年8月21日
0.3.2 2023年3月6日
0.3.1 2023年2月16日
0.1.0 2023年2月2日

#972 in 算法

Download history 81/week @ 2024-03-14 72/week @ 2024-03-21 96/week @ 2024-03-28 139/week @ 2024-04-04 311/week @ 2024-04-11 159/week @ 2024-04-18 142/week @ 2024-04-25 179/week @ 2024-05-02 153/week @ 2024-05-09 219/week @ 2024-05-16 185/week @ 2024-05-23 298/week @ 2024-05-30 182/week @ 2024-06-06 231/week @ 2024-06-13 180/week @ 2024-06-20 96/week @ 2024-06-27

每月728次下载

MIT许可协议

16KB
282

TopK

TopK算法在Rust中的实现。

该crate目前提供了过滤空间节省算法

版本号遵循semver规范。

示例

let mut topk = FilteredSpaceSaving::new(3);
topk.insert("1", 10);
topk.insert("2", 20);
topk.insert("3", 1);
topk.insert("4", 2);
let topk_result = topk.into_sorted_vec();
assert_eq!(topk_result.len(), 3);
assert_eq!(topk_result[0].0, "2");

支持合并空间节省结果

let mut fss1 = FilteredSpaceSaving::new(3);
fss1.insert("1", 10);
fss1.insert("2", 20);
fss1.insert("3", 2);
fss1.insert("4", 1);
fss1.insert("4", 3);
fss1.insert("5", 3);
let mut fss2 = FilteredSpaceSaving::new(3);
fss2.insert("1", 10);
fss2.insert("2", 20);
fss2.insert("3", 20);
fss2.insert("4", 10);
fss1.merge(&fss2).unwrap();
let result = fss1.into_sorted_vec();
assert_eq!(result[0].0, "2");

lib.rs:

TopK算法在Rust中的实现。

该crate目前提供了过滤空间节省算法

版本号遵循semver规范。

示例

let mut topk = FilteredSpaceSaving::new(3);
topk.insert("1", 10);
topk.insert("2", 20);
topk.insert("3", 1);
topk.insert("4", 2);
let topk_result = topk.into_sorted_vec();
assert_eq!(topk_result.len(), 3);
assert_eq!(topk_result[0].0, "2");

支持合并空间节省结果

let mut fss1 = FilteredSpaceSaving::new(3);
fss1.insert("1", 10);
fss1.insert("2", 20);
fss1.insert("3", 2);
fss1.insert("4", 1);
fss1.insert("4", 3);
fss1.insert("5", 3);
let mut fss2 = FilteredSpaceSaving::new(3);
fss2.insert("1", 10);
fss2.insert("2", 20);
fss2.insert("3", 20);
fss2.insert("4", 10);
fss1.merge(&fss2).unwrap();
let result = fss1.into_sorted_vec();
assert_eq!(result[0].0, "2");

依赖项

~2MB
~32K SLoC