我一直在互联网上进行广泛的搜索,以寻找解决我问题的某种方式,但是我没有运气找到任何可以帮助我的东西。基本上,我想知道的是是否有可能将双精度型转换为键,然后将其插入优先级队列。

这是我正在使用的方法,来自文件名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用作MaxPQMinPQ的通用名称。
为此,请尝试以下操作:

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/

10-11 22:28
查看更多