Java优先级队列实现
2014-03-31 14:40
344 查看
所谓的优先级队列,即队列中数据项的值有序
优先级队列数组实现:
数组头为队列尾,数组尾为队列头
队列中数据项的值从队列头至队列尾越来越大
由于插入操作有可能需要移动数组中的数据项,故插入操作的时间复杂度为(0+N)/2,即O(N)
删除操作的时间复杂度为O(1)
优先级队列数组实现:
数组头为队列尾,数组尾为队列头
队列中数据项的值从队列头至队列尾越来越大
public class PriorityQueue { private int[] data; private int size; public PriorityQueue(int size){ data = new int[size]; this.size = 0; } public void push(int toInsert) throws Exception{ if(size == data.length) throw new Exception("Queue is full!"); if(size == 0){ data[0] = toInsert; }else{ int i = size -1; for( ; i >= 0 ; i--){ if(data[i] < toInsert){ data[i+1] = data[i]; }else{ break; } } data[i+1] = toInsert; } size++; } public int pop() throws Exception{ if(this.size == 0) throw new Exception("Queue is empty!"); return data[--size]; } public int peek() throws Exception{ if(this.size == 0) throw new Exception("Queue is empty!"); return data[size-1]; } public int size(){ return this.size; } public boolean isEmpty(){ return (size == 0); } public boolean isFull(){ return (size == data.length); } }
由于插入操作有可能需要移动数组中的数据项,故插入操作的时间复杂度为(0+N)/2,即O(N)
删除操作的时间复杂度为O(1)
相关文章推荐
- java中关于优先级队列的实现
- 循环队列与优先级队列的Java实现
- 用堆实现优先级队列--Java
- 优先级队列的Java ,C++ STL,堆实现
- java创建优先级队列及增删改查实现
- 数据结构Java实现——②队列-->队列的“奇葩”二 优先级队列
- java开发系统内核:实现进程优先级队列
- Java优先级队列实现
- java之中PriorityQueue实现原理(具有优先级的队列)
- 用堆实现优先级队列 Java实现
- 【java基础】阻塞队列,优先级队列实现方式
- 第6章 堆排序 java实现 简单版 泛型版 最大优先级队列
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- java实现优先级队列
- java使用数组实现优先级队列
- 堆排序及优先级队列Java实现
- 算法导论Java实现-优先级队列(6.5章节)
- java中关于优先级队列的实现
- java基于有序链表的优先级队列实现
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表