0

このコードに問題があります。O(1)の挿入時間が速いPriorityQを作成する必要がありますが、優先度の高いアイテムの削除が遅いと、私が間違っていることを誰かに教えてもらえますか?

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]);
      }

}}

4

1 に答える 1

0

まず、コンストラクターを適切に定義していません。

public void PQ() { 
pq= new long[3];
nElems=0;
}

もっと似てるはず

PriorityQ() { 
pq= new long[3];
nElems=0;
}
于 2013-02-24T05:23:54.797 に答える