优先级队列

来源:互联网 发布:淘宝c店会员积分 编辑:程序博客网 时间:2024/06/03 22:49

插入过程:外层循环当前所有元素,从最后一个到第一个,要插入的元素与当前循环元素比较,当前元素向后移位或退出循环

package datastructure.c4.queue.priority;public class PriorityQ {private int maxSize;private long[] queArray;private int nItems;public PriorityQ(int s){maxSize=s;queArray=new long[maxSize];nItems=0;}public void insert(long item){int j;if(nItems==0){queArray[nItems++]=item;}else{for(j=nItems-1;j>=0;j--){if(item>queArray[j]){queArray[j+1]=queArray[j];}else{break;}}queArray[j+1]=item;nItems++;}}public long remove(){return queArray[--nItems];}public long peekMin(){return queArray[nItems-1];}public boolean isEmpty(){return nItems==0;}public boolean isFull(){return nItems==maxSize;}}

package datastructure.c4.queue.priority;public class PriorityQApp {public static void main(String[] args) {PriorityQ thePQ=new PriorityQ(5);thePQ.insert(30);thePQ.insert(50);thePQ.insert(10);thePQ.insert(40);thePQ.insert(20);while(!thePQ.isEmpty()){long item = thePQ.remove();System.out.print(item+"  ");}System.out.println("");}}


0 0