优先队列的数组实现(有序)
生活随笔
收集整理的這篇文章主要介紹了
优先队列的数组实现(有序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
優先隊列上文介紹了一種方法,另一種方法就是在insert()方法中添加代碼,將所有較大的元素向右邊一定一格以使數組保持有序(和插入排序一樣)。這樣,最大的元素總會在數組的一邊,優先隊列的刪除最大元素操作就和棧的pop()操作一樣了。
用數組實現優先隊列:(insert已經進行有序操作。pop操作即為peekMax,remove操作)
public class PriorityQ {private int maxSize;private long[] queArray;private int nItems;//constructorpublic PriorityQ(int s){maxSize = s;queArray = new long[maxSize];nItems = 0;}//insertpublic 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]; //大的數據項放在了后面elsebreak;}//end forqueArray[j+1] = item;nItems++;}//end else}public long remove(){return queArray[--nItems];}public long peekMin(){return queArray[nItems - 1];}public long peekMax(){return queArray[0];}public boolean isEmpty(){return nItems == 0;}public boolean isFull(){return nItems == maxSize;} }總結
以上是生活随笔為你收集整理的优先队列的数组实现(有序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java字符串替换空格符_特殊的空格(J
- 下一篇: 无法嵌入互操作类型 请改用适用的接口_可