PriorityQueue 的出队操作

落爺英雄遲暮 提交于 2019-12-14 21:54:10

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

在微博上看了篇文章,“关于PriorityQueue 二叉堆的问题“,然后顺便看了一下 PriorityQueue 的源代码和堆排序。PriorityQueue 在出队时,会将位于数组中第一位的元素,同时也是最小的那个元素返回。之后会将数组中最后一个元素放入数组的第一位,然后进行堆调整。

可见,PriorityQueue 并不是维护一个有序的数组,而是只保证二叉堆的根节点是最小的元素。每一次出队操作都会进行堆调整,但每一次堆调整的时间复杂度都是 O(logn),所以在数据量比较大的时候还是一个不错的选择。

PriorityQueue 的堆排序相关的方法主要有两个:siftUp 和 siftDown。前者是 add、offer 等操作使用,后者是 poll 等操作使用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!