优先队列(存储结构数组)--Java实现

 1 /*优先队列--是对队列的一种改进
 2  *要存储的数据存在优先级--数值小的优先级高--在队头
 3  *优先队列的实现
 4  *1.数组:适合数据量小的情况(没有用rear+front实现)
 5  *优先队列头在items-1,队列尾在0是固定的
 6  *2.堆:适合数据量大的情况
 7  *优先队列的效率:插入O(N)移除O(1)
 8  *优先队列的应用:操作系统线程调度算法
 9  * */
10 public class MyPriorityQueue {
11     private int maxSize;
12     private long[] arr;//插入的时候保证有序
13     private int items;
14     
15     public MyPriorityQueue(int s) {
16         maxSize = s;
17         arr = new long[maxSize];
18         items = 0;
19     }
20     
21     public void insert(long key){
22         int j;
23         if(items == 0){//为空直接加入
24             arr[items++] = key;
25         }
26         else{//不为空就将小元素方在最上面--队列头
27             for(j = items-1;j >= 0;j--){
28                 if(key > arr[j]){
29                     arr[j+1] = arr[j];
30                 }
31                 else{
32                     break;
33                 }
34             }
35             arr[j+1] = key;
36             items++;
37         }
38     }
39     
40     public long remove(){
41         return arr[--items];
42     }
43     
44     public boolean isEmpty(){
45         return items == 0;
46     }
47     
48     public boolean isFull(){
49         return items == maxSize;
50     }
51     
52     public long getPeekMin(){
53         return arr[items -1];
54     }
55     
56     public void diaplayPQ(){
57         for(int i = items- 1;i >= 0;i--){
58             System.out.print(arr[i] + " ");
59         }
60         System.out.println();
61     }
62 }

 

posted @ 2017-10-17 10:51  sun1993  阅读(1139)  评论(0编辑  收藏  举报