#tree #fenwick #binary #indexed #structure #sum #time

fenwick-tree

Rust 中二叉索引树(Fenwick 树)数据结构的实现

3 个不稳定版本

0.1.0 2021年5月29日
0.0.2 2021年5月13日
0.0.1 2021年5月11日

#1520 in 数据结构

MIT 许可证

18KB
233

fenwick-tree

crates.io Build

Rust 中二叉索引树(或 Fenwick 树)数据结构的实现。

概述

fenwick-tree 提供了一个简单的 Fenwick 树实现,可以用作某些算法(如加权随机)的构建块。

基本 API 简单,包括 addsum 方法(两者都为 O(log n) 时间)。以下是一个快速示例

use fenwick_tree::*;

let mut tree = FenwickTree::<i32>::with_len(5);

for i in 0..5 {
    tree.add(i, i as i32)?;
}

assert_eq!(tree.sum(..)?, 0 + 1 + 2 + 3 + 4);
assert_eq!(tree.sum(1..)?, 1 + 2 + 3 + 4);
assert_eq!(tree.sum(2..5)?, 2 + 3 + 4);
assert_eq!(tree.sum(3..=4)?, 3 + 4);

恐慌

addsum 方法都返回 Result,并且不应该引发恐慌。然而,with_len 通过使用 vec![I::default(); len] 构建支持向量,实际上可能会像常规 Rust 代码一样引发恐慌。

了解更多

更多详细信息请参阅 文档

许可证

该软件包采用 MIT 许可证。

贡献

对于贡献没有严格的规则。您可以随意提出问题或提交拉取请求。

无运行时依赖