核心思想:数据项按照关键字的值有序,这样关键字最小的数据项(或者最大)总是在对头,数据插入的时候会按照顺序插入到合适的位置以确保队列的顺序
Java代码:
package ch04;
public class PriorityQueue {
// 数组
private long[] arr;
// 最大空间
private int maxSize;
// 有效元素大小
private int elmes;
// 构造方法
public PriorityQueue(int maxSize) {
this.maxSize = maxSize;
arr = new long[maxSize];
elmes = 0;
}
// 插入数据
public void insert(long value) {
int i;
for (i = 0; i < elmes; i++) {
if (value > arr[i]) {
break;
}
}
for (int j = elmes; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = value;
elmes++;
}
// 移除数据
public long remove() {
long value = arr[elmes - 1];
elmes--;
return value;
}
// 是否为空
public boolean isEmpty() {
return (elmes == 0);
}
// 是否满了
public boolean isFull() {
return (elmes == maxSize);
}
// 返回有效元素大小
public int size() {
return maxSize;
}
public static void main(String[] args) {
PriorityQueue pq = new PriorityQueue(5);
pq.insert(50);
pq.insert(10);
pq.insert(40);
pq.insert(30);
pq.insert(20);
while (!pq.isEmpty()) {
System.out.print(pq.remove() + " ");
}
}
}