a min priority queue backed by a pairing heap
PriorityQueue
| Name | Description |
|---|---|
T |
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| push | 1 | 批量入队,返回最后入队元素的节点句柄(供 reduceKey / contains 使用)。 禁止 Nothing 元素(对齐 Java NPE 语义)。 |
| peek | 1 | 检索但不移除队首元素;空队列返回 Nothing。 对齐 java.util.PriorityQueue#peek()。 |
| poll | 1 | 检索并移除队首元素;空队列返回 Nothing。 对齐 java.util.PriorityQueue#poll()。均摊 O(log n)。 |
| clear | 1 | 移除全部元素,O(1)。 对齐 java.util.PriorityQueue#clear()。 |
| remove | 1 | 移除一个与 x 判等(EqualityComparer(Of T).Default,即 x.Equals(elem)) 的元素。对齐 java.util.PriorityQueue#remove(Object): - 成功移除返回 True,不存在返回 False - x 为 Nothing 时返回 False(对齐 OpenJDK index… |
| pop | 1 | 移除并返回队首元素;空队列返回 Nothing。均摊 O(log n)。 |
| reduceKey | 1 | 将树中节点 heapNode 的键值降低为 newKey 并重新归堆(Java 无此能力, 属于 pairing heap 的超集功能,典型用途:Dijkstra/Prim 的惰性删除替代)。 契约:newKey 必须 lessThan 于原键值。 |
| forEach | 1 | |
| ToString | 1 |
03 Properties
04 Fields
05 Members
`0())批量入队,返回最后入队元素的节点句柄(供 reduceKey / contains 使用)。 禁止 Nothing 元素(对齐 Java NPE 语义)。
检索但不移除队首元素;空队列返回 Nothing。 对齐 java.util.PriorityQueue#peek()。
检索并移除队首元素;空队列返回 Nothing。 对齐 java.util.PriorityQueue#poll()。均摊 O(log n)。
移除全部元素,O(1)。 对齐 java.util.PriorityQueue#clear()。
`0)移除一个与 x 判等(EqualityComparer(Of T).Default,即 x.Equals(elem)) 的元素。对齐 java.util.PriorityQueue#remove(Object):
- 成功移除返回 True,不存在返回 False
- x 为 Nothing 时返回 False(对齐 OpenJDK indexOf 的 null 处理)
- 只移除一个匹配实例;多个相同元素时移除遍历序最先命中的那个
复杂度 O(n)(任意元素删除的理论下界)。
移除并返回队首元素;空队列返回 Nothing。均摊 O(log n)。
将树中节点 heapNode 的键值降低为 newKey 并重新归堆(Java 无此能力, 属于 pairing heap 的超集功能,典型用途:Dijkstra/Prim 的惰性删除替代)。 契约:newKey 必须 lessThan 于原键值。
队列元素个数,O(1)(对齐 java.util.PriorityQueue#size())
队首元素(lessThan 定义下的最小元素);空队列返回 Nothing
堆性质自检(调试用);空队列为空真 True
堆根;Nothing 元素即为空哨兵节点
元素比较委托:lessThan(a, b) = True 表示 a 应排在 b 之前
元素计数器:使 count 达到 Java size() 的 O(1)
Action(Of T, PairingHeap(Of T)))