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

本文介绍了一种改进的数据结构——优先队列,并详细探讨了其两种实现方式:适用于小数据量的数组实现及适用于大数据量的堆实现。文中通过Java代码展示了如何使用数组来实现一个简单的优先队列,包括插入、移除操作,并讨论了优先队列在操作系统线程调度等场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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 }

 

转载于:https://www.cnblogs.com/sun1993/p/7680478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值