核心思想:
在优先级队列中,数据项按关键字的值有序,这样的关键字最小的数据项或者最大的总是在队头,数据项插入时会按照顺序插入到合适的位置,以保证队列的顺序。
package 优先级队列;
public class Queue {
private long[] arr;// 数组
private int maxSize;// 初始化值
private int elems;// 有效元素
public Queue(int maxSize) {
this.maxSize = maxSize;
arr = new long[maxSize];
elems = 0;
}
// 插入数据
public void insert(long value) {
int i;
for (i = 0; i < elems; i++) {
if (arr[i] < value) {
break;
}
}
for (int j = elems; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = value;
elems++;
}
// 移除数据
public long remove() {
long value=arr[elems-1];
elems--;
return value;
}
// 是否为空
public boolean isEmpty() {
return (elems == 0);
}
// 是否满了
public boolean isFull() {
return (elems == maxSize);
}
// 返回有效元素的大小
public int size() {
return elems;
}
}
网友评论