PriorityQueue
翻译过来就是【优先队列】的意思。本质上是一个完全二叉树实现的小顶堆或者大顶堆:
每次的元素拿取操作,都是拿到根元素。元素值不能为null。该数据结构底层实现依旧是数组。
(对数据结构不是特别熟悉的同学,可以去看一下 数据结构与算法 章节)
看一下时间复杂度把:
- 插入(Create):通常,插入操作的时间复杂度是 O(log n),其中 n 是优先队列中元素的数量。这是因为新元素被插入到优先队列的末尾,然后可能需要上浮(sift up)到它正确的位置以维持堆的性质。
- 删除最小(或最大)元素(Delete):删除操作的时间复杂度也是 O(log n)。删除操作通常涉及移除根节点(即最小或最大元素),然后将最后一个元素移动到根节点,并进行下沉(sift down)操作以维持堆的性质。
- 查找最小(或最大)元素(Read/Find):查找操作的时间复杂度是 O(1),因为最小(或最大)元素总是位于堆的根节点。
- 更新(Update):更新操作的时间复杂度取决于更新后元素的优先级变化。如果更新导致元素需要上浮或下沉,那么时间复杂度是 O(log n),因为可能需要进行上浮或下沉操作来重新调整堆的性质。
- 遍历:就是遍历数组嘛,时间复杂度是O(N)
整体的时间复杂度还是比较低的,但是由于底层采用的是数组,所以,还是那个问题,扩容!
2024.10.29
writeBy kaiven