一.优先队列基础
普通队列:先进先出/
优先队列:出队顺序和入队顺序无关;和优先级相关
1.为什么使用优先队列?
-
动态选择优先级最高的任务
如操作系统任务管理。
二.手写基于最大堆的优先队列及复杂度分析
package com.tc.javabase.datastructure.tree.priorityQueue;
import com.tc.javabase.datastructure.queue.Queue;
import com.tc.javabase.datastructure.tree.heap.MaxHeap;
public class PriorityQueue<E extends Comparable<E>> implements Queue<E> {
private MaxHeap<E> maxHeap;
public PriorityQueue(){
maxHeap = new MaxHeap<>();
}
@Override
public int getSize(){
return maxHeap.size();
}
@Override
public boolean isEmpty(){
return maxHeap.isEmpty();
}
@Override
public E getFront(){
return maxHeap.findMax();
}
@Override
public void enqueue(E e){
maxHeap.add(e);
}
@Override
public E dequeue(){
return maxHeap.extractMax();
}
}