github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/rpheap/README.md (about)

     1  # rpheap
     2  
     3  An easy to use rank pairing heap, which takes **O(1)** for `Insert`, `FindMin`, `Meld`, and **O(log n)** for `DeleteMin`. Rank pairing heap is one of the most efficient heaps so far!
     4  
     5  ```golang
     6  
     7  package rpheap
     8  
     9  import (
    10  	"sort"
    11  	"testing"
    12  
    13      "gotest.tools/assert"
    14      "github.com/zhiqiangxu/rpheap"
    15  )
    16  
    17  func TestRPHeap(t *testing.T) {
    18  	heap := rpheap.New()
    19  	numbers := []int{10, 4, 3, 2, 5, 1}
    20  	for _, number := range numbers {
    21  		rpheap.Insert(int64(number))
    22  	}
    23  
    24  	sort.Ints(numbers)
    25  
    26  	for _, number := range numbers {
    27  		m := heap.DeleteMin()
    28  		assert.Assert(t, int64(number) == m, "number:%v m:%v", number, m)
    29  	}
    30  
    31  	assert.Assert(t, heap.Size() == 0, "heap not empty")
    32  }
    33  
    34  ```