.Net中的优先级队列[关闭]

2024-03-15

我正在寻找优先级队列或堆数据结构的 .NET 实现

优先级队列是比简单排序提供更多灵活性的数据结构,因为它们允许新元素以任意间隔进入系统。将新作业插入优先级队列比在每次到达时重新排序所有作业更具成本效益。

基本优先级队列支持三种主要操作:

  • 插入(Q,x)。给定一个带有键 k 的项 x,将其插入到优先级队列 Q 中。
  • 求最小值(Q)。返回指向该项目的指针 其键值小于优先级队列中的任何其他键 问。
  • 删除-最小值(Q)。从优先级队列Q中移除key最小的项

除非我找错地方了,否则框架中就没有这个。有谁知道有什么好的,还是我应该自己推出?


您可能喜欢 IntervalHeapC5通用集合库 http://www.itu.dk/research/c5/。引用用户指南 https://www.itu.dk/research/c5/latest/ITU-TR-2006-76.pdf

Class IntervalHeap<T>实现接口IPriorityQueue<T>使用存储为对数组的区间堆。这FindMin and FindMax操作以及索引器的 get 访问器花费时间 O(1)。这DeleteMin, DeleteMax、添加和更新操作以及索引器的设置访问器需要时间 O(log n)。与普通优先级队列相比,区间堆提供了最小 并以相同的效率实现最大程度的操作。

API 足够简单

> var heap = new C5.IntervalHeap<int>();
> heap.Add(10);
> heap.Add(5);
> heap.FindMin();
5

从 Nuget 安装https://www.nuget.org/packages/C5 https://www.nuget.org/packages/C5或 GitHubhttps://github.com/sestoft/C5/ https://github.com/sestoft/C5/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net中的优先级队列[关闭] 的相关文章

随机推荐