Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/can-dy-jack/heap
MinHeap, MaxHeap, minHeapSort and maxHeapSort implementation in JavaScript.
https://github.com/can-dy-jack/heap
data-structures heap heap-sort javascript maxheap minheap
Last synced: 6 days ago
JSON representation
MinHeap, MaxHeap, minHeapSort and maxHeapSort implementation in JavaScript.
- Host: GitHub
- URL: https://github.com/can-dy-jack/heap
- Owner: can-dy-jack
- License: mit
- Created: 2023-01-11T05:08:56.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-14T07:06:48.000Z (almost 2 years ago)
- Last Synced: 2024-03-26T21:21:11.171Z (8 months ago)
- Topics: data-structures, heap, heap-sort, javascript, maxheap, minheap
- Language: JavaScript
- Homepage:
- Size: 63.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# heap
> `堆` 在大部分编程语言中,都已经有内置方法实现它,但似乎JS并没有。
>
> 最大堆和最小堆:用于高效快速地取得当前数据集中最大或者最小的元素> The default initial size of heap is 0.
## install
```sh
npm i @kartjim/heap
```
## require
```js
const {
MaxHeap,
MinHeap,
minHeapSort,
maxHeapSort
} = require('@kartjim/heap');
```## import
```js
import {
MaxHeap,
MinHeap,
minHeapSort,
maxHeapSort
} from '@kartjim/heap';
```## HeapSort
### maxHeapSort
> sort the array using MaxHeap (from maximum to minimum).时间复杂度: $O(log N)$
```js
const arr = [12, 668, 1, 0, 4, 67];
maxHeapSort(arr) // [668, 67, 12, 4, 1, 0]
```
### minHeapSort
> sort the array using MaxHeap (from minimum to maximum).时间复杂度: $O(log N)$
```js
const arr = [12, 668, 1, 0, 4, 67];
minHeapSort(arr) // [0, 1, 4, 12, 67, 668]
```## MaxHeap API
### use
constructor时间复杂度: $O(N)$
空间复杂度: $O(N)$
```js
const heap = new MaxHeap(4);
```### push
> add a new element to the MaxHeap.时间复杂度: $O(log N)$
空间复杂度: $O(1)$
```js
heap.push(1);
heap.push(2);
heap.push(3);
```### peek
> return the max element in the MaxHeap.时间复杂度: $O(1)$。
空间复杂度: $O(1)$。
```js
heap.peek() // 3
```### pop
> remove the max element in the MaxHeap.时间复杂度: $O(log N)$
空间复杂度: $O(1)$
```js
heap.pop() // 3
```### getSize
> return the size of the MaxHeap.```js
heap.getSize() // 2
```
### isEmpty
> check if the MaxHeap is empty```js
heap.isEmpty() // false
```
### isFull
> check if the MaxHeap is full```js
heap.isFull() // true
```
### MaxHeap.heapify
> create a MaxHeap from a Array.```js
const t = MaxHeap.heapify([1, 2, 3, 4]);
t.peek() // 4
```## MinHeap API
### use
constructor时间复杂度: $O(N)$
空间复杂度: $O(N)$
```js
const heap = new MinHeap(4);
```### push
> add a new element to the MinHeap.时间复杂度: $O(log N)$
空间复杂度: $O(1)$
```js
heap.push(1);
heap.push(2);
heap.push(3);
```### peek
> return the max element in the MinHeap.时间复杂度: $O(1)$。
空间复杂度: $O(1)$。
```js
heap.peek() // 1
```### pop
> remove the max element in the MinHeap.时间复杂度: $O(log N)$
空间复杂度: $O(1)$
```js
heap.pop() // 1
```### getSize
> return the size of the MinHeap.```js
heap.getSize() // 2
```
### isEmpty
> check if the MinHeap is empty```js
heap.isEmpty() // false
```
### isFull
> check if the MinHeap is full```js
heap.isFull() // true
```
### MaxHeap.heapify
> create a MinHeap from a Array.```js
const t = MaxHeap.heapify([1, 2, 3, 4]);
t.peek() // 1
```