1.知识储备:
2.API设计:
3.代码实现:
package PriorityQueue;
public class IndexMinPriorityQueue<T extends Comparable<T>> {
//用来存储元素的数组
private T[] items;
//保存每个元素在数组items中的索引,pq数组需要堆有序
private int[] pq;
//保存qp的逆序,pq的值作为索引,pq的索引作为值
private int[] qp;
//记录堆中元素个数
private int N;
public IndexMinPriorityQueue(int capacity) {
// TODO Auto-generated constructor stub
this.items=(T[])new Comparable[capacity+1];
this.pq=new int[capacity+1];
this.qp=new int[capacity+1];
this.N=0;
//默认情况下,队列中没有存储任何元素,让qp中的元素都为-1
for(int i=0;i<qp.length;i++){
qp[i]=-1;
}
}
//判断堆中索引i处的元素是否小于索引j处的元素
private boolean less(int i,int j