我正在寻找一个优先级队列的实现,它使用常量double
值作为密钥的优先级。我相信,如果实施得当,这可以比使用灵活的比较器的默认PriorityQueue
实施更快。 reduceKey操作(=降低队列中已有元素的优先级)不是必需的。
我找到了implementation from the NLP group in Stanford,但他们声称它是原始实现的慢的两倍。是否有一个PQ实现可以胜过我们用例的默认PriorityQueue
?
答案 0 :(得分:0)
尝试使用
上的Sedgewick-Wayne代码http://algs4.cs.princeton.edu/24pq/MaxPQ.java.html
但是用double替换通用Key类型并删除Comparable / Comparator代码。
答案 1 :(得分:0)
您引用的斯坦福NLP版本速度较慢是因为它支持reduceKey()。如其Javadoc中所述,您可以尝试此类,它不支持decreaseKey():
答案 2 :(得分:0)
我们最终实现了自己的堆结构。具有优化remove()
操作的d-ary堆表现得相当好,特别是在加载的共享内存计算机上。