1.定义
出对顺序和如对顺序无关,和优先级有关
2.使用场景
动态选择优先级最高的任务执行,即动态任务处理中心处理任务的原则。
3.接口
public interface queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);
E dequeue();
E getFront();
}
4.优先队列的堆实现复杂度
入队:O(logn),出对:O(logn)
5.优先队列的最大堆实现
(1)堆的实现
参考上一篇:https://blog.csdn.net/u010886217/article/details/85111182 的最大堆的实现。
(2)优先队列的最大堆的实现
public class PriorityQueue<E extends Comparable<E>> implements queue<E> {
//1.最大堆结构
private MaxHeap<E> maxHeap;
//2.构造函数
public PriorityQueue(){
maxHeap=new MaxHeap<E>();
}
//3.获得基本信息
@Override
public int getSize() {
return maxHeap.size();
}
@Override
public boolean isEmpty() {
return maxHeap.isEmpty();
}
//*************************************************************
//4.查询最顶端元素
/**
* 查询最顶端元素
* @return
*/
@Override
public E getFront() {
return maxHeap.findMax();
}
//*************************************************************
//5.入队
/**
* 入队
* @param e
*/
@Override
public void enqueue(E e) {
maxHeap.add(e);
}
//*************************************************************
//6.出队
/**
* 出队
* @return
*/
@Override
public E dequeue() {
return maxHeap.extractMax();
}
}