如何在 C5 库中使用 IPriorityQueue

Posted

技术标签:

【中文标题】如何在 C5 库中使用 IPriorityQueue【英文标题】:How to use IPriorityQueue in the C5 Library 【发布时间】:2017-09-29 02:31:45 【问题描述】:

我正在为 C# (C5) 使用流行的 C5 库,我正在尝试弄清楚如何正确实现 IPriorityQueue。可以说我有一套A=5,4,1,2,3。我希望优先级是最高的整数值。我该如何实现?

有人可以举例说明我在哪里将集合A 中的元素一个一个添加到队列中吗?在哪里可以指定优先级属性?有点迷失了实施。

顺便说一句,最终目标是用它来做一个二叉堆。

【问题讨论】:

我建议查看他们的IntervalHeap 实现,以获取实现IProirityQueue 的示例。您可以使用我的simple heap of integers 作为堆实现的示例,您应该能够修改它以实现他们的IPriorityQueue。几年前,我写了很多关于二进制(和 d-ary)堆的文章。整个系列见blog.mischel.com/2013/12/18/posting-the-heap-code。 那么您使用 IPriorityQueue 而不是列表吗?该语法是什么样的?公共 Mylist : IPriorityQueue ? 你熟悉用 C# 实现接口吗? 对这门语言还是有点陌生​​,所以不是真的哈哈。我真的很感激一个如何正确使用这个东西的简单例子。我想这只是一个界面,所以我应该多查一下。顺便说一句,不错的博客! 到目前为止,这是我的节点代码:pastebin.com/mbK8An5m。我想为了保持堆的形状属性,我应该添加一个左右选项:/ 【参考方案1】:

我不熟悉那个 C5 库,但是这里有一个易于使用的高性能优先级队列实现:

PriorityQueue source

ConcurrentPriorityQueue source(如果你需要线程安全)

使用其中一个,您可以这样构建它:

IPriorityQueue<object> queue = new PriorityQueue<object>(5, true);

其中 5 是您要管理的优先级数,true/false 指定您是否希望优先级被视为降序或升序,而 将是您的通用类型。这两个都支持完整的列表操作。还有一个project website。

【讨论】:

以上是关于如何在 C5 库中使用 IPriorityQueue的主要内容,如果未能解决你的问题,请参考以下文章

阿里云服务器c5性能如何?适合哪些场景?

阿里云服务器c5性能如何?适合哪些场景?

阿里云热门云服务器机型N4,S6,C5,C6都有哪些特点,该如何选择?

为啥我的决策树没有节点? (C5.0)

B150主板Win7系统出现蓝屏且提示错误代码0x000000C5的原因及解决方法

excel求和,没数据则显示空白