theodesp / go-heaps

Reference implementations of heap data structures in Go - treap, skew, leftlist, pairing, fibonacci
MIT License
97 stars 29 forks source link
2-3-heap data-structures fibonacci-heap go heaps leftlist-heap pairing-heap rank-pairing-heap skew-heap treap

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

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 Leftist Skew Fibonacci Binomial Treap
FindMin Θ(1) Θ(1) Θ(1) Θ(1) Θ(log n) O(n)
DeleteMin O(log n) O(log n) O(log n) O(log n) Θ(log n) O(n)
Insert Θ(1) O(log n) O(log n) Θ(1) Θ(1) O(n)
Find O(n)
Delete O(n) O(log n) O(n) Θ(log n) O(n)
Adjust O(n) O(log n) O(n) Θ(log n) O(n)
Meld Θ(1)
Operation Rank Pairing
FindMin Θ(1)
DeleteMin O(log n)
Insert Θ(1)
Find O(n)
Delete O(n)
Adjust O(n)
Meld Θ(1)

Contributors

Thanks goes to these wonderful people (emoji key):

Miroojin Bakshi
Miroojin Bakshi

💻
Syfaro
Syfaro

💻
Theofanis Despoudis
Theofanis Despoudis

💻
Radliński Ignacy
Radliński Ignacy

💻
Don McNamara
Don McNamara

🚇
Afrizal Fikri
Afrizal Fikri

💻
Logan HAUSPIE
Logan HAUSPIE

💻
Song Guo
Song Guo

💻
Safwan Mohammed
Safwan Mohammed

⚠️ 💻

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

LICENCE

Copyright © 2017 Theo Despoudis MIT license