#heap #vector #priority-queue #min-max #element #u32 #instance

nightly csheap

基于向量的堆实现

11 个版本

0.1.12 2024年2月18日
0.1.11 2024年2月18日

#8#min-max

Download history 18/week @ 2024-07-01 82/week @ 2024-07-29

每月 98 次下载

MIT 许可证

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:移除并返回根节点中的元素。

堆有两种类型:MinMax

  • Minextract 总是取最小元素。
  • Maxextract 总是取最大元素。
// 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

无运行时依赖