优先级队列
如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。
Java数组模拟队列
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。这也就是我们平常经常用说到的先进先出原则(FIFO)。Java 中的 List 就可以作为队列来使用,在队列尾部添加元素则使用 list.add 方法,从队列头部删除元素则使用 list.remove 方法。
Java数组模拟优先级队列结构实例:
输出结果:
-
- [1, 0, 0, 0]
- [1, 3, 0, 0]
- [1, 2, 3, 0]
- [1, 2, 3, 0]
- [1, 2, 3, 5]
- ----不能插入元素了,队列已满----
- size:4
- peek:5
- 取出元素:5
- 取出元素:3
- 取出元素:2
- 取出元素:1
- size:0
复制代码
|