数据结构与算法(第一季):优先级队列(Priority Queue)

一、优先级队列(Priority Queue)

普通的队列是先进先出原则。
优先级队列是按照优先级高低进行出队,比如将优先级最高的元素作为队头优先出队。
使用场景:

医院急诊根据病人病情和挂号时间决定谁先看病。
操作系统的多任务调度,队列元素是任务,优先级是任务类型。

二、优先级队列(Priority Queue)底层实现

通过最大堆来实现优先级队列。

public class PriorityQueue<E> {
private BinaryHeap<E> heap; // 二叉堆

public PriorityQueue(Comparator<E> comparator) {
    heap = new BinaryHeap<>(comparator);
}

public PriorityQueue() {
    this(null);
}

public int size() {
    return heap.size();
}

public boolean isEmpty() {
    return heap.isEmpty();
}

public void clear() {
    heap.clear();
}

public void enQueue(E element) {
    heap.add(element); //入队
}

public E deQueue() {
    return heap.remove(); //让优先级最高的元素出队
}

public E front() {
    return heap.get(); //获取堆顶元素
}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容