标签: priority-queue

始终保持n个最佳元素的数据结构

我需要一个始终包含n迄今为止插入的最大项目的数据结构(没有特定的顺序).

所以,如果n是3,我们可以进行以下会话,其中插入一些数字并且容器的内容发生变化:

[]  // now insert 1
[1] // now insert 0
[1,0] // now insert 4
[1,0,4] // now insert 3
[1,4,3] // now insert 0
[1,4,3] // now insert 3
[4,3,3]
Run Code Online (Sandbox Code Playgroud)

你明白了.数据结构的名称是什么?实现这个的最佳方法是什么?或者这是在一些图书馆?

我想使用一个容器,它有一个priority_queuefor元素(委托),它使用反向比较,因此pop将删除最小的元素.因此该insert函数首先检查要插入的新元素是否大于最小元素.如果是这样,我们抛出最小的并推动新元素.

(我有一个C++实现,但问题是与语言无关.)

language-agnostic priority-queue data-structures

8
推荐指数
2
解决办法
2528
查看次数

从MSMQ优先获取消息

我通过设置其优先级在MSMQ中发送消息.使用C#

我可以先从MSMQ获得高优先级的消息吗?

就像我们进入Priority Queue一样.

还有一件事......

假设有三个优先级

0 - 高1-中2 - 低

队列中的序列是2001122221111100

现在如果我发送高优先级的消息(0)将被放置?通过在MSMQ中设置优先级.它会像真正的优先级队列一样吗?

.net msmq priority-queue

8
推荐指数
1
解决办法
5708
查看次数

如何在PriorityQueue中找到项目的索引?(JAVA)

我想知道是否有可能在PriorityQueue中找到值的索引.只是看看它是"在线"的数字.有人知道吗?

java priority-queue

8
推荐指数
2
解决办法
7523
查看次数

如何在java中获得比较器的反转

在一个方法中,我收到一个泛型object E extends Comparable<E>作为参数.现在我想创建两个优先级comparator队列.其中一个使用E和其他使用E使用相反的队列comparator(即如果E使用'<',那么第二个队列必须使用'> =').请告诉我如何创建两个这样的队列.

queue2=new PriorityQueue<E>(0,Collections.reverseOrder(e));
Run Code Online (Sandbox Code Playgroud)

我收到的错误reverseOrder不适用.

请帮忙

java generics heap priority-queue comparator

8
推荐指数
2
解决办法
1万
查看次数

我该如何正确迭代优先级队列?

我有一个涉及迭代优先级队列的java赋值.队列由带有字符串和int的对象组成,我需要有一种方法来检查队列中所有对象的单独对象的字符串.

这是一个迭代器对象的最佳方法吗?这看起来太乱了.我可以出列队并入队,但这似乎效率低下.也许是一个foreach循环?

java queue foreach iterator priority-queue

8
推荐指数
2
解决办法
2万
查看次数

Java中的PriorityQueue如何排序重复条目?

这可能听起来很愚蠢,但是当你有(键,值)对的对象并且你根据键对它们进行排序时它是有意义的.用代码说明我的观点:

public class Pair implements Comparable<Pair> {
    private int value;
    private int key;

    public Pair(int key, int value) {
        this.key   = key;
        this.value = value;
    }

    @Override
    public int compareTo(Pair o) {
        if (this.key > o.key)
            return 1;
        else if (this.key < o.key)
            return -1;
        return 0;
    }
}

public class program {
    public static void main(String[] args) {
        PriorityQueue<Pair> queue = new PriorityQueue<Pair>;
        queue.add(new Pair(1,1));
        queue.add(new Pair(1,2));
        queue.add(new Pair(1,3));

        Pair pair = queue.poll(); // What would be in pair? …
Run Code Online (Sandbox Code Playgroud)

java priority-queue

8
推荐指数
1
解决办法
6943
查看次数

Scala的TreeSet与Java的TreeSet - 民意调查?

如果我想删除log(n)Java中的最高条目TreeSet,我会使用treeSet.pollFirst()- Scala mutable.TreeSet类的等价物是什么?

总之,我真正想要的是一个堆状的优先级队列中的数据结构,让我removeMax,addupdatePriority在对数时间.我看了Scala集合库,我很困惑 - 虽然mutable.PriorityQueue让我deque(即removeMax)在对数时间 - 它没有提供更新日志时间的优先级(我必须hackily扫描和删除项目并重新添加线性时间) .同样mutable.TreeSet会让我在对数时间内更新优先级(通过hackily删除和重新添加),但它没有removeMax(即pollFirst)操作.我应该使用什么样的集合容器?请不要将我介绍给外部依赖项.

java scala priority-queue treeset scala-collections

8
推荐指数
1
解决办法
1104
查看次数

如何使用两个队列实现优先级队列

在面试问题中,我被要求使用队列实现优先级队列,

在采访之后我用Google搜索并发现它可以使用两个队列实现,但我没有找到如何...

请任何人解释我.

提前致谢.

queue priority-queue

8
推荐指数
2
解决办法
1万
查看次数

双标准优先级队列

是否有一个不太复杂的方法来实现使用两个标准的优先级队列?队列获取与2个中创建ComparatorS和提供(除了add)的操作poll1()poll2(),其中每个删除和返回根据相应的比较器的最小元素.

请注意,它与这两个 问题没有任何共同之处.

动机

我的用例是分支定界优化.当您获得无限时间时,以最佳界限扩大候选人可证明是最佳的.假设无限时间可证明是错误的.

严格遵循这一策略通常最终在截止日期到来时根本没有解决方案.一个简单的创可贴首先是将搜索引向解决方案,然后切换到最佳约束策略.这是相当不令人满意的,因为发现的第一个解决方案可能是任意低质量的.

这就是为什么我想使用两个标准队列:在一个步骤中,展开最佳边界候选者,在另一个步骤中,根据一些启发式扩展"最佳外观"候选者.

另一种可能的用途是用于帕累托最优化.

java priority-queue

8
推荐指数
1
解决办法
2762
查看次数

在Scala中创建最小堆的最简单,最有效的方法是什么?

val maxHeap = scala.collection.mutable.PriorityQueue[Int] //Gives MaxHeap
Run Code Online (Sandbox Code Playgroud)

使用Ordering将PriorityQueue转换为minHeap最简洁有效的方法是什么?

scala priority-queue min-heap data-structures

8
推荐指数
1
解决办法
5075
查看次数