我一直在互联网上进行广泛的搜索,以寻找解决我问题的某种方式,但是我没有运气找到任何可以帮助我的东西。基本上,我想知道的是是否有可能将双精度型转换为键,然后将其插入优先级队列。
这是我正在使用的方法,来自文件名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
文件中的insert方法如下所示: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
中的insert方法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();
}
它们是相同的。现在出现了问题,因为不能更改
public void insert(Double a)
中的MedianPQ.java
。我必须输入一个double,然后将该double插入PQ。但是MinPQ.java and MaxPQ.java
中的方法仅插入一个密钥。是否可以只将double转换为insert(Double a)
方法内的键??? 最佳答案
您应该将Double
用作MaxPQ
和MinPQ
的通用名称。
为此,请尝试以下操作:
public static void main(String[] args) {
MedianPQ<Double> median = new MedianPQ<Double>(10, 20);
median.insert(1.1D);
median.insert(2.2D);
}
要么
private MaxPq<Double> left;
private MinPq<Double> right;
希望能帮助到你。
关于java - 将Double转换为Key(优先级队列),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58374668/