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

优先级队列是比简单排序更灵活的数据 struct ,因为它们允许新元素以任意间隔进入系统.将新作业(job)插入优先级队列比在每次到达时重新排序要划算得多.

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

  • 插入(Q,x).给定一个带有键k的项目x,将其插入优先级队列Q.
  • 求最小值(Q).返回指向该项的指针
  • 删除最小值(Q).从优先级队列Q中删除密钥最小的项

除非我找错了地方,否则框架中没有.有人知道一个好的,还是我应该自己滚?

推荐答案

我喜欢使用PowerCollections中的OrderedBagOrderedSet类作为优先队列.

.net相关问答推荐

PowerShell中窗体定时器和系统定时器的统一处理

为什么 .NET 中的 System.Version 定义为 Major.Minor.Build.Revision?

为什么具有可为空值的 struct 的 HashSet 非常慢?

是什么让 Enum.HasFlag 这么慢?

OpenCV的.Net(dotNet)包装器?

如何使用转储文件来诊断内存泄漏?

如何让 .NET 的 Path.Combine 将正斜杠转换为反斜杠?

日期时间是什么意思?在 C# 中是什么意思?

NuGetPackageImportStamp 有什么用?

为什么 .NET 中不需要 Maven?

迭代器和枚举器的区别

ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 的区别

单元测试 C# 保护方法

使用 lambda 表达式代替 IComparer 参数

MemoryCache 不遵守配置中的内存限制

如何将 MailMessage 对象作为 *.eml 或 *.msg 文件保存到磁盘

ConfigurationManager.AppSettings - 如何修改和保存?

在类型 c# 上切换大小写

在构建事件命令行中放置注释的正确方法?

枚举和匹配属性的 C# 命名约定