java版資料結構與演算法—優先順序佇列
阿新 • • 發佈:2018-11-29
/**
* 優先順序佇列,排好序的佇列插入和刪除
*/
class PriorityQueue {
int a[];
int maxSize;
int nItems;
public PriorityQueue(int size){
maxSize = size;
a = new int[maxSize];
nItems = 0;
}
//有序插入
public void inset(int value){
int j; //要插入的位置
if(nItems == 0){
a[nItems++] = value;
}else {
for(j=nItems - 1;j>=0;j--){
if(value > a[j]){
a[j+1] = a[j];
}else {
break;
}
}
a[j+1] = value;
nItems ++;
}
}
//刪除
public int remove(){
return a[--nItems];
}
//檢視最小的
public int peekMin(){
return a[nItems - 1];
}
//判滿
public boolean isFull(){
return nItems == maxSize;
}
//判空
public boolean isEmpty(){
return nItems == 0;
}
public static void main(String[] args){
PriorityQueue pq = new PriorityQueue(10);
pq.inset(56);
pq.inset(5);
pq.inset(6);
pq.inset(99);
pq.inset(1);
pq.inset(35);
pq.inset(25);
while (!pq.isEmpty()){
int value = pq.remove();
System.out.print(value + " ");
}
}
}