什么是 heap-struct
heap-struct 是一个基于 JavaScript 的二叉堆数据结构库,可以用于实现优先队列等功能。堆是一种比较常见的数据结构,常用于算法中。
安装使用
可以通过 npm 进行安装:
--- ------- -----------
安装完成后,可以通过以下代码引入 heap-struct:
----- ---- - -----------------------
API
Heap 提供了以下 API:
new Heap(compare_fn)
:创建一个新的堆,compare_fn
是一个可选的比较函数,用于决定优先级。Heap.prototype.push(item)
:将一个元素添加到堆中。Heap.prototype.pop()
:从堆中弹出一个元素。Heap.prototype.peek()
:查看堆顶元素。Heap.prototype.size
:堆的大小。Heap.prototype.isEmpty()
:判断堆是否为空。Heap.prototype.heapify(array)
:将一个数组变成堆。Heap.prototype.clone()
:克隆一个堆。
示例
创建堆
----- ---- - ----------------------- ----- ---- - --- -------- -- -- - - ---
上面代码中,通过 new Heap((a, b) => a - b)
创建一个堆,比较函数是 (a, b) => a - b
,意思是如果 a > b
,就返回大于 0 的数,如果 a < b
,就返回小于 0 的数,如果 a = b
,就返回 0。
添加元素
------------- ------------- -------------
上面代码中,通过 push
方法向堆中添加元素。
弹出元素
------------------------ -- -
弹出元素会返回堆中的最小值(优先级最高的值),上面代码中弹出最小值 1。
查看堆顶元素
------------------------- -- -
通过 peek
方法查看堆顶元素,上面代码中堆顶元素是 2。
堆的大小
----------------------- -- -
通过 size
属性可以查看堆的大小,上面代码中堆的大小是 2。
判断堆是否为空
---------------------------- -- -----
通过 isEmpty
方法可以判断堆是否为空。如果为空返回 true
,否则返回 false
。上面代码中堆不为空。
将数组变成堆
---------------- -- -- -- ---- ------------------------- -- -
通过 heapify
方法将一个数组变成堆,上面代码中数组 [5, 6, 4, 7, 3]
变成了一个堆,堆顶元素是 3。
克隆堆
----- ----- - ------------- -------------------------- -- -
通过 clone
方法可以克隆一个堆,上面代码中克隆一个与 heap
相同的堆。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005739081e8991b448e9830