DonMcNamara / go-heaps

Reference implementations of heap data structures in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-heaps All Contributors

GoDoc License

Reference implementations of heap data structures in Go

Installation

$ go get -u github.com/theodesp/go-heaps

Contents

Heaps

  • Pairing Heap: A pairing heap is a type of heap data structure with relatively simple implementation and excellent practical amortized performance.
  • Leftlist Heap: a variant of a binary heap. Every node has an s-value which is the distance to the nearest leaf. In contrast to a binary heap, a leftist tree attempts to be very unbalanced.
  • Skew Heap: A skew heap (or self-adjusting heap) is a heap data structure implemented as a binary tree. Skew heaps are advantageous because of their ability to merge more quickly than binary heaps.

Usage

package main

import (
	"github.com/theodesp/go-heaps"
	pairingHeap "github.com/theodesp/go-heaps/pairing"
	"fmt"
)

func main()  {
	heap := pairingHeap.New()
	heap.Insert(go_heaps.Integer(4))
	heap.Insert(go_heaps.Integer(3))
	heap.Insert(go_heaps.Integer(2))
	heap.Insert(go_heaps.Integer(5))

	fmt.Println(heap.DeleteMin()) // 2
	fmt.Println(heap.DeleteMin()) // 3
	fmt.Println(heap.DeleteMin()) // 4
	fmt.Println(heap.DeleteMin()) // 5
}

Complexity

Operation Pairing Leftlist Skew
FindMin Θ(1) Θ(1) Θ(1)
DeleteMin O(log n) O(log n) O(log n)
Insert Θ(1) O(log n) O(log n)
Find O(n)
Delete O(n)
Adjust O(n)

Contributors

Thanks goes to these wonderful people (emoji key):


Miroojin Bakshi

💻

Syfaro

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

LICENCE

Copyright © 2017 Theo Despoudis MIT license

About

Reference implementations of heap data structures in Go

License:MIT License


Languages

Language:Go 97.3%Language:Makefile 2.7%