定义:其实就是有序队列。
运算限制:自动排序。既然是自动排序那就不需要考虑先进先出的问题了,排序之后就乱了,所以只需要定义排序方式(取最大还是取最小),这里为了简化逻辑,避免再出现队列需要考虑循环使用存储空间的问题,我们把最大值永远放在下标0的位置,出队列时取最小值。当然你也可以反过来。
基本运算:
1,添加。
2:移除。
3:取最小值。
public class PriorityQueue {
private Long[] queArray;
private int maxSize ;//数组初始化长度
private int nItems ;//数组实际应用长度
public PriorityQueue(int size){
maxSize = size ;
queArray = new Long[maxSize];
nItems = 0 ;
}
//插入,大到小排序
public void insert(long item){
if(isFull()) throw new ArrayIndexOutOfBoundsException(maxSize);
int j = 0 ;
if(nItems==0){
queArray[nItems++] = item ;
}else{
for(j=nItems-1 ;j>=0;j--){
if(item>queArray[j]){
queArray[j+1] = queArray[j];
}else{