3 个版本
0.1.2 | 2021 年 3 月 13 日 |
---|---|
0.1.1 | 2021 年 3 月 13 日 |
0.1.0 | 2021 年 2 月 4 日 |
#1930 在 算法 中
用于 dharmadb
36KB
725 行
地铁
在 Rust 中实现的一个快速、高性能的跳表。
跳表是一种概率数据结构,它提供了 O(log N)
的搜索和插入复杂度。
有关跳表如何工作的更多信息,请参阅 这里。
用法
跳表支持以下操作。
插入
将元素插入到列表中,同时保持排序顺序。
插入方法接受一个键和一个值。
列表中的值将按键排序存储。
let list = SkipList::new();
list.insert(1, 1);
list.insert(2, 2);
获取
如果列表中存在提供的键,则返回一个可选值。
此操作的时间复杂度大约为 O(logN)
。
let maybe_value = list.get(&key);
if maybe_value.is_some() {
let value = maybe_value.unwrap();
}
删除
如果存在,则使用提供的键从链表中删除一个项。
list.delete(&key_to_delete);
收集
将跳表中的项按键排序收集到一个列表中。
list.insert(2, 2);
list.insert(1, 1);
list.insert(5, 5);
let values = list.collect(); // (1, 1), (2, 2), (5, 5)
依赖关系
~385KB