heapz

package
v0.0.27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 4, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Fix

func Fix[T any](h Interface[T], i int)

Fix re-establishes the heap ordering after the element at index i has changed its value. Changing the value of the element at index i and then calling Fix is equivalent to, but less expensive than, calling Remove(h, i) followed by a Push of the new value. The complexity is O(log n) where n = h.Len().

func Init

func Init[T any](h Interface[T])

Init establishes the heap invariants required by the other routines in this package. Init is idempotent with respect to the heap invariants and may be called whenever the heap invariants may have been invalidated. The complexity is O(n) where n = h.Len().

func Pop

func Pop[T any](h Interface[T]) any

Pop removes and returns the minimum element (according to Less) from the heap. The complexity is O(log n) where n = h.Len(). Pop is equivalent to Remove(h, 0).

func Push

func Push[T any](h Interface[T], x T)

Push pushes the element x onto the heap. The complexity is O(log n) where n = h.Len().

func Remove

func Remove[T any](h Interface[T], i int) any

Remove removes and returns the element at index i from the heap. The complexity is O(log n) where n = h.Len().

Types

type Element

type Element[T any] struct {
	Value T
	// contains filtered or unexported fields
}

func (*Element[T]) Index

func (e *Element[T]) Index() int

type Heap

type Heap[T any] struct {
	// contains filtered or unexported fields
}

func New

func New[T any](cap int, cmp func(T, T) bool) Heap[T]

New returns a new heap with the given capacity and compare function.

func (*Heap[T]) Fix

func (h *Heap[T]) Fix(e *Element[T])

Fix re-establishes the heap ordering after the element has changed its value.

func (*Heap[T]) Init

func (h *Heap[T]) Init(s []T, cmp func(T, T) bool)

Init initializes a heap with the given elements and compare function.

func (*Heap[T]) Len

func (h *Heap[T]) Len() int

Len returns the number of elements in the heap.

func (*Heap[T]) Peek

func (h *Heap[T]) Peek() *Element[T]

Peek returns the minimum element (according to compare function) from the heap without removing it.

func (*Heap[T]) Pop

func (h *Heap[T]) Pop() *Element[T]

Pop removes and returns the minimum element (according to compare function) from the heap.

func (*Heap[T]) PopAll

func (h *Heap[T]) PopAll() iter.Seq[T]

PopAll returns an iterator that yields all elements in the heap.

func (*Heap[T]) Push

func (h *Heap[T]) Push(x T) *Element[T]

Push pushes the element x onto the heap.

func (*Heap[T]) PushElement

func (h *Heap[T]) PushElement(e *Element[T])

PushElement pushes the element e onto the heap.

func (*Heap[T]) Remove

func (h *Heap[T]) Remove(e *Element[T])

Remove removes the element from the heap.

type Interface

type Interface[T any] interface {
	sort.Interface
	Push(x T) // add x as element Len()
	Pop() T   // remove and return element Len() - 1.
}

The Interface type describes the requirements for a type using the routines in this package. Any type that implements it may be used as a min-heap with the following invariants (established after Init has been called or if the data is empty or sorted):

!h.Less(j, i) for 0 <= i < h.Len() and 2*i+1 <= j <= 2*i+2 and j < h.Len()

Note that Push and Pop in this interface are for package heap's implementation to call. To add and remove things from the heap, use heap.Push and heap.Pop.

type Slice

type Slice[T any] struct {
	Values []T
	// contains filtered or unexported fields
}

func FromSlice

func FromSlice[T any](s []T, cmp func(T, T) bool) Slice[T]

FromSlice creates a new heap from a slice.

func NewSlice

func NewSlice[T any](cap int, cmp func(T, T) bool) Slice[T]

NewSlice returns a new heap with the given compare function.

func (*Slice[T]) Fix

func (s *Slice[T]) Fix(i int)

Fix re-establishes the heap ordering after the element at index i has changed its value.

func (*Slice[T]) Len

func (s *Slice[T]) Len() int

Len returns the number of elements in the heap.

func (*Slice[T]) Peek

func (s *Slice[T]) Peek() (T, bool)

Peek returns the minimum element (according to compare function) from the heap without removing it.

func (*Slice[T]) Pop

func (s *Slice[T]) Pop() (T, bool)

Pop removes and returns the minimum element (according to compare function) from the heap.

func (*Slice[T]) PopAll

func (s *Slice[T]) PopAll() iter.Seq[T]

PopAll returns an iterator that yields all elements in the heap.

func (*Slice[T]) Push

func (s *Slice[T]) Push(x T)

Push pushes the element x onto the heap.

func (*Slice[T]) Remove

func (s *Slice[T]) Remove(i int) (T, bool)

Remove removes and returns the element at index i from the slice.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL