优先级队列


public class PriorityQApp
{
  public static class  PriorityQ  
  {
       // array in sorted order,form maxt at 0 to min at size-1
        private int maxSize;
        private long[] queArray;
        private int nItems;


public PriorityQ(int s)
{
   // Construct Priority based on paramter s
    maxSize = s;
    queArray = new long[maxSize];
    nItems = 0;
}


public void insert(long item)
{
int j ;
if(nItems == 0)
{
queArray[nItems++] = item;
}else
{
for(j=nItems-1;j>=0;j--)
{
if(item > queArray[j])
queArray[j+1] = queArray[j];
else
break;
}
// 若要新插入的数据比队列中当前位置的数据小,
// 则将要新插入的数据放到当前数据的前面,保证先出。队列是先进先出 
queArray[j+1] = item;
// 每插入一个数据,队列长度增1
nItems++;
}
}


public long remove()
{
return queArray[--nItems];
}


public long peekMin()
{
return queArray[nItems-1];
}


public boolean isEmpty()
{
return (nItems==0);
}


public boolean isFull()
{
return nItems==maxSize;
}
}
public static void main(String[] args)
{
PriorityQ thePQ = new PriorityQ(5);
thePQ.insert(30);
thePQ.insert(50);
thePQ.insert(10);
thePQ.insert(40);
thePQ.insert(20);


while(!thePQ.isEmpty())
{
long item = thePQ.remove();
System.out.print(item+" ");
}
System.out.println("");
}
} spa