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

2022-01-07  本文已影响0人  萧1帅

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

}

上一篇 下一篇

猜你喜欢

热点阅读