moon add SupremeHuaji/FibonacciHeaplet heap = new(int_compare)let heap = new(int_compare)
ignore(heap.insert("apple", 5))
ignore(heap.insert("banana", 2))let heap = new(int_compare)
ignore(heap.insert("apple", 5))
ignore(heap.insert("banana", 2))
let min = heap.peek_min() // Some(("banana", 2))
let min_pair = heap.extract_min() // Some(("banana", 2))let heap = new(int_compare)
let node = heap.insert("orange", 7)
let result = heap.delete(node) // truelet heap1 = new(int_compare)
let heap2 = new(int_compare)
ignore(heap1.insert("apple", 5))
ignore(heap2.insert("pear", 1))
heap1.merge(heap2)let heap = new(int_compare)
let values = ["a", "b", "c"]
let keys = [3, 1, 2]
heap.insert_many(values, keys)let heap = new(int_compare)
ignore(heap.insert("a", 1))
let node = heap.find_by_value("a")
let node2 = heap.find_by_key(1)let heap = new(int_compare)
ignore(heap.insert("a", 3))
ignore(heap.insert("b", 1))
ignore(heap.insert("c", 2))
let arr = heap.to_array()
let sorted_arr = heap.to_sorted_array()let heap = new(int_compare)
ignore(heap.insert("a", 1))
heap.clear()let heap = new(int_compare)
ignore(heap.insert("a", 1))
ignore(heap.insert("b", 2))
let heap2 = heap.clone()
// heap2 is a complete copy of heap
ignore(heap.insert("c", 3)) // Modify original heap
ignore(heap2.insert("d", 4)) // Modify clone
// The two heaps are independent
let arr1 = heap.to_sorted_array() // Contains a, b, c
let arr2 = heap2.to_sorted_array() // Contains a, b, d| Operation | Amortized Complexity | Description |
|---|---|---|
| insert() | O(1) | Insert new element |
| merge() | O(1) | Merge two heaps |
| peek_min() | O(1) | Peek minimum element |
| extract_min() | O(log n) | Remove and return minimum |
| delete(node) | O(log n) | Delete arbitrary node |
| decrease_key() | O(1) | Decrease node key |
| to_array() | O(n) | Unordered traversal |
| to_sorted_array() | O(n log n) | Sorted traversal by key |
| clone() | O(n) | Deep clone heap |
| insert_many() | O(m) | Batch insert m elements |
// Insert/Merge: Directly add node to root list
// Delete-Min: Promote all children of min node to root, consolidate trees of same degree
// Decrease-Key: If heap order violated, cut node and cascade cut parent| Feature | Binary Heap | FibonacciHeap |
|---|---|---|
| Insert | O(log n) | O(1) |
| Merge | O(n) | O(1) |
| Delete-Min | O(log n) | O(log n) |
| Arbitrary Delete | O(log n) | O(log n) |
| Decrease-Key | O(log n) | O(1) |
| Use Case | General | Graph/High Performance |