美文网首页
数据结构与算法(第一季):优先级队列(Priority Queu

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

作者: 萧1帅 | 来源:发表于2022-01-07 09:31 被阅读0次

一、优先级队列(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(); //获取堆顶元素
}

}

相关文章

网友评论

      本文标题:数据结构与算法(第一季):优先级队列(Priority Queu

      本文链接:https://www.haomeiwen.com/subject/bhfkcrtx.html