将 Double 转换为 Key(优先队列)
Convert Double to Key (Priority queue)
我一直在互联网上进行广泛的搜索,寻找某种类型的问题答案,但我没有找到任何可以帮助我的东西。基本上我想知道的是,是否有可能将双精度转换为然后插入到优先级队列中的键。
这是我苦苦挣扎的方法,来自文件名 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)
。我必须接受一个 double,然后将那个 double 插入 PQ。但是 MinPQ.java and MaxPQ.java
中的方法只插入一个键。是否可以将双精度转换为 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;
希望对您有所帮助。
我一直在互联网上进行广泛的搜索,寻找某种类型的问题答案,但我没有找到任何可以帮助我的东西。基本上我想知道的是,是否有可能将双精度转换为然后插入到优先级队列中的键。
这是我苦苦挣扎的方法,来自文件名 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)
。我必须接受一个 double,然后将那个 double 插入 PQ。但是 MinPQ.java and MaxPQ.java
中的方法只插入一个键。是否可以将双精度转换为 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;
希望对您有所帮助。