Я провел обширный поиск по сетям, пытаясь найти какой-то ответ на мою проблему, но мне не повезло найти что-нибудь, что могло бы мне помочь. По сути, меня интересует, возможно ли преобразовать двойное число в ключ, который затем вставляется в приоритетную очередь.
Это метод, с которым я борюсь, это имя файла 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();
}
Они идентичны. Теперь проблема возникает, поскольку public void insert(Double a)
из MedianPQ.java
нельзя изменять. Я должен взять двойной, а затем вставить этот двойной в PQ. Но методы из MinPQ.java and MaxPQ.java
только вставляют ключ. Можно ли просто преобразовать double в ключ в методе insert(Double a)
???