【发布时间】:2019-10-14 10:17:41
【问题描述】:
我一直在通过互联网进行广泛的搜索,寻找某种类型的解决我的问题的方法,但我没有找到任何可以帮助我的东西。基本上我想知道的是是否可以将双精度转换为密钥,然后将其插入优先级队列。
这是我正在努力解决的方法是来自文件名MedianPQ.java。就是这个:
public void insert(Double a){
if (size == 0 || a.compareTo(findMedian()) == 1) minPQ.insert(a);
else maxPQ.insert(a);
rearrange();
size++;
}
MinPQ.java文件中的插入方法如下:
public void insert(Key x) {
// double size of array if necessary
if (n == pq.length - 1) resize(2 * pq.length);
// add x, and percolate it up to maintain heap invariant
pq[++n] = x;
swim(n);
assert isMinHeap();
}
这里是MaxPQ.java的插入方法
public void insert(Key x) {
// double size of array if necessary
if (n == pq.length - 1) resize(2 * pq.length);
// add x, and percolate it up to maintain heap invariant
pq[++n] = x;
swim(n);
assert isMaxHeap();
}
它们是相同的。现在问题出现了,因为不能更改来自MedianPQ.java 的public void insert(Double a)。我必须接受一个双倍然后将那个双倍插入到 PQ 中。但是MinPQ.java and MaxPQ.java 中的方法只插入一个键。是否可以将双精度转换为insert(Double a) 方法内的键???
【问题讨论】:
标签: java type-conversion key double priority-queue