一 优先队列
普通队列:先进先出
优先队列:出队和优先级相关,与入队顺序无关
动态选择优先级较高的元素出队。
优先队列中的元素不是固定不变的,每次出队前都有可能有新的元素入队,每次出队时都要从此刻队列中的所有元素中选择优先级最高的元素
二 应用场景
普通队列,现实生活中的各种排队现象,排队上车,排队买票,排队吃饭等等
优先队列,操作系统中的任务调度等等
三 相关题目
1. 经典例题
在N个元素中选出前M个元素解题分析:
当M=1时,只需遍历N个元素即可,时间复杂度度为O(n)
当M>1时,常规做法,使用排序,如快速排序,归并排序,时间复杂度为O(NlogN);
高效做法,使用堆(或基于堆的优先队列),首先将N中的前M个元素放入堆中,之后遍历剩余的N-M个元素,用满足条件的元素,即优先级更高的元素去替换M个元素中优先级最低的元素。时间复杂度为O(NlogM)。