Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BinomialHeap ¶
type BinomialHeap[T any] struct { // contains filtered or unexported fields }
A max binomial heap.
It has higher constant for insert and pop, but supports merging in O(log(len)).
interface: PriorityQueue
func New ¶ added in v0.2.0
func New[T any](predicate func(T, T) int) BinomialHeap[T]
func (*BinomialHeap[T]) Len ¶
func (b *BinomialHeap[T]) Len() int
Return the number of element.
Example ¶
heap := New(func(a, b int) int { return a - b }) fmt.Println(heap.Len()) heap.Push(123) fmt.Println(heap.Len())
Output: 0 1
func (*BinomialHeap[T]) Merge ¶
func (b *BinomialHeap[T]) Merge(heap BinomialHeap[T])
Merge and destruct the heap into the current heap.
Example ¶
// Merge two binomial heaps and print the top element after merging heap1 := New(func(a, b int) int { return a - b }) heap1.Push(5) heap1.Push(3) heap2 := New(func(a, b int) int { return a - b }) heap2.Push(10) heap2.Push(8) heap1.Merge(heap2) fmt.Println(heap1.Len()) fmt.Println(heap1.Top())
Output: 4 10
func (*BinomialHeap[T]) Pop ¶
func (b *BinomialHeap[T]) Pop()
Remove the top element from the heap.
Example ¶
heap := New(func(a, b int) int { return a - b }) heap.Push(5) heap.Push(3) heap.Push(7) fmt.Println(heap.Top()) heap.Pop() fmt.Println(heap.Top())
Output: 7 5
func (*BinomialHeap[T]) Push ¶
func (b *BinomialHeap[T]) Push(e T)
Push e to the heap.
Example ¶
heap := New(func(a, b int) int { return a - b }) heap.Push(5) heap.Push(3) heap.Push(7) fmt.Println(heap.Len()) heap.Push(10) fmt.Println(heap.Len()) fmt.Println(heap.Top())
Output: 3 4 10
func (*BinomialHeap[T]) Top ¶
func (b *BinomialHeap[T]) Top() T
Return the top of the heap.
Example ¶
heap := New(func(a, b int) int { return a - b }) heap.Push(5) heap.Push(3) heap.Push(7) fmt.Println(heap.Top())
Output: 7
Click to show internal directories.
Click to hide internal directories.