Java优先级队列简单实现
来源:互联网 发布:andreja pejic 知乎 编辑:程序博客网 时间:2024/05/22 10:50
/** * 优先级队列简单实现 * 采用数组实现 * 插入元素时需要进行key比较,找到索引位置 * 删除元素时,直接从顶端取出(优先级高的优先处理) * @author gisliu * */public class PriorityQueue { private int MAX_CAPACITY; private int[] data; private int items; public PriorityQueue(int capacity){ MAX_CAPACITY = capacity; data = new int[MAX_CAPACITY]; items = 0; } public PriorityQueue(){ this(10); } public void insert(int value){ if(isFull()) throw new FullQueueException(); if(items == 0){ data[items++] = value; } else {// int j = 0;// while(data[j]>value){// j++; // 步骤(1)找到插入的位置// }//// for(int i=items;i>j;i--){// data[i] = data[i-1]; // 步骤(2)整体移位,腾出一个空间// }// data[j] = value; // 步骤(1)和步骤(2)可以合并 int i = 0; for(i=items-1;i>=0;i--){ if(data[i] < value) { data[i+1] = data[i]; } else { break; } } data[i+1] = value; items++; } } public int remove(){ if(isEmpty()) throw new EmptyQueueException("queue is empty"); return data[--items]; } public boolean isEmpty(){ return (items == 0); } public boolean isFull(){ return (items == MAX_CAPACITY); } public int peek(){ return data[items-1]; } public int size(){ return items; } public static void main(String[] args){ PriorityQueue priority = new PriorityQueue(); Random random = new Random(); for(int i=0;i<10;i++){ priority.insert(random.nextInt(100)); } // 遍历 for(int i=0;i<10;i++){ System.out.println(priority.remove()); } }}
阅读全文
0 0
- Java优先级队列简单实现
- Java优先级队列实现
- java实现优先级队列
- c++ 简单实现优先级队列
- 一个简单的优先级队列实现
- 用堆实现优先级队列 Java实现
- java中关于优先级队列的实现
- java使用数组实现优先级队列
- 用堆实现优先级队列--Java
- 堆排序及优先级队列Java实现
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- 循环队列与优先级队列的Java实现
- 优先级队列的简单实现及STL举例应用
- 用链表实现优先级队列
- 优先级队列实现
- 优先级队列的实现
- c#实现优先级队列
- 优先级队列的实现
- CountDownLatch使用、源码浅析
- 使用QSerialport读取串口数据并处理
- UESTC
- 文章标题
- 队列
- Java优先级队列简单实现
- HDU
- (转)别只盯着比特币!“野蛮生长”的ICO江湖:2年30倍只是寻常
- 关于函数(二)数组指针和指针数组
- 7.18
- Discuz!教程之通过后台词语过滤功能的简单设置挡住绝大部分垃圾内容
- 区间dp
- jvm内存
- 自定义按钮实现标签栏切换