Приоритет Q Помощь
У меня проблемы с этим кодом. Я должен создать PriorityQ, который имеет быстрое время вставки O(1), но медленнее удаление высокоприоритетного элемента, может кто-нибудь сказать мне, что я делаю неправильно?
public class PriorityQ {
private long[] pq;
private int nElems;
public void PQ() {
pq= new long[3];
nElems=0;
}
public boolean isEmpty() { return nElems==0;}
public void insert(long x) {
pq[nElems++]=x;
}
public long remove(long x){
long max = 0;
for (int i = 1; i < nElems; i++)
if (pq[i] == x) {
max = pq[i];
pq[i] = pq[--nElems];
break;
}
return max;
}
public static void main (String []args){
PriorityQ theQ = new PriorityQ();
theQ.insert (10);
theQ.insert (20);
theQ.insert (30);
theQ.remove (10);
for(int i=0; i<theQ.nElems; i++){
System.out.print ("");
System.out.print (theQ.pq[i]);
}
}}
1 ответ
Решение
Для начала, вы не определяете свой конструктор должным образом.
public void PQ() {
pq= new long[3];
nElems=0;
}
должно быть больше похоже
PriorityQ() {
pq= new long[3];
nElems=0;
}