11 个版本
0.1.12 | 2024年2月18日 |
---|---|
0.1.11 |
|
#8 在 #min-max
每月 98 次下载
10KB
236 代码行
csheap
基于向量的最小和最大堆实现。这是 ADT 优先队列的高效实现。
// Create a new heap instance for u32 elements.
let mut heap = Heap::<u32>::new(HeapType::Max);
// Create a new heap instance from an u32 vector.
// Will take the ownership of the vector.
let mut heap = Heap::<u32>::from_vec(HeapType::Min, some_vector);
// To avoid taking the ownership of the vector you can,
// for example, clone the vector.
let mut heap = Heap::<u32>::from_vec(HeapType::Min, some_vector.clone());
有两种基本操作
insert
:插入一个元素。extract
:移除并返回根节点中的元素。
堆有两种类型:Min
和 Max
。
Min
:extract
总是取最小元素。Max
:extract
总是取最大元素。
// Create a heap that always return the max element
let mut heap = Heap::<u32>::new(HeapType::Max);
heap.insert(1u32);
heap.insert(2u32);
heap.extract(); // returns 2