.NET 中的堆类
可能的重复:
C# 中的斐波那契、二元或二项式堆?
是否有任何类就像.NET 中的堆一样? 我需要某种可以从中检索分钟的集合。元素。我只想要 3 个方法:
Add()
RemoveMinElement()
GetMinElement()
我不能使用排序列表,因为键必须是唯一的,我可能有几个相同的元素。
Possible Duplicate:
Fibonacci, Binary, or Binomial heap in c#?
Is there any class like heap in .NET?
I need some kind of collection from which I can retrieve min. element. I just want 3 methods:
Add()
RemoveMinElement()
GetMinElement()
I can't use sorted list because there keys has to be unique, and I might have several identical elements.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
SortedList
< /a> 或SortedDictionary
(参见下面的讨论)使用自定义键。如果您使用具有引用相等性的类型,但可以根据您关心的值进行比较,那么这可以工作。类似这样的:
这是使用具有二进制堆性能特征的
SortedDictionary
的工作示例:结果:
You could use
SortedList
or aSortedDictionary
(see discussion below) with a custom key. If you used a type with referential equality, but could be compared based on the value you care about, then this could work.Something like this:
Here is a working example of using a
SortedDictionary
which has binary-heap performance characteristics:Results:
优先级队列看起来很适合您的问题:
.Net 中的优先级队列
Google 获取“C# 优先级队列”以获取更多实现。
Priority Queues look like a good fit to your problem:
Priority queue in .Net
Google for "C# priority queues" for more implementations.