优先级队列基础知识和模拟实现

1、概念:

优先级队列也是一种抽象数据类型。优先级队列中的每个元素都有优先级,而优先级高(或者低) 的将会出队,而优先级相同的则按照其在优先级队列中的顺序依次出队。常常有如下操作

  • 将对象添加到队列、删除最大、最小元素
  • 返回最高优先级对象
2、常用接口介绍

java 提供了 PriorityQueue 和 PriorityBlockingQueue 两种类型的优先级队列,其中后者是线程安全的,PriorityQueue 的效率会更好,以它来讲解。
1> 常用构造

PriorityQueue()		创建一个空的优先级队列,默认容量是 11
PriorityQueue(int initialCapacty)	创建一个初始容量为 initialCapacity的优先级队列
// 注意:initialCapacity 不能小于11,否则会抛出 illegalArgumentException 异常
priorityQueue(Collection<? extends E> c)  用一个集合来创建优先级队列

2> 添加/删除/获取优先级最高的元素

boolean offer(E e) // 添加元素 e,时间复杂度O(log2N),空间不够会扩容
E peek()		   

你可能感兴趣的:(数据结构,与,算法,优先级队列,堆模拟优先级队列)