package work2;
/*
* 优先级队列中,插入操作需要O(N)的时间,删除操作需要O(1)的时间
*/
public class PriorityQ {
private int maxSize;
private long[] queArray;
private int nItems;
public PriorityQ(int 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;
}
}
//System.out.println("j="+j);
queArray[j+1] = item;
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 pr = new PriorityQ(5);
pr.insert(30);
pr.insert(50);
pr.insert(10);
pr.insert(40);
pr.insert(20);
while(!pr.isEmpty()) {
long item = pr.remove();
System.out.print(item+" ");
}
}
}