priorityQueue by JS
用JS编写的优先级队列,支持自定义comparator
调用方式如 const pq=new PriorityQueue((a,b)=>a-b),默认的comparator是(a,b)=>(a-b),即入队的element越小,优先级越大。
constructor([comparator: Function])
队列初始化.
Arguments
- (optional)
comparator(Function) - 自定义的比较函数。
不传任何参数的情况下将会是值越小的element优先级越高。
const priorityQueue = new PriorityQueue()//相当于new PriorityQueue((a,b)=>a-b)可传入自定义的comparator.
const customQueue = new PriorityQueue((a, b) => {
return b - a
})入队
Arguments
element(any) - 入队的元素
element可以是除了null和undefined的任意类型
// 可以是数字
priorityQueue.enqueue(2)
// 可以是字符串
priorityQueue.enqueue('let's go')
// 可以是任意类型(除了undefined和null)
priorityQueue.enqueue({ name: 'jarvey' })弹出队头元素并返回。
returns any: 队头元素
// priorityQueue: [12, 3, 5], comparator: default
const item1 = priorityQueue.dequeue() // 3
const item2 = priorityQueue.dequeue() // 5
const item3 = priorityQueue.dequeue() // 12返回队头元素
returns any: 队头元素
// priorityQueue: [12, 3, 5], comparator: default
const item1 = priorityQueue.peek() // 3
const item2 = priorityQueue.peek() // 3
const item3 = priorityQueue.peek() // 3size(): Number
返回队列长度
returns Number: 队列长度
priorityQueue.enqueue(1)
priorityQueue.enqueue(2)
priorityQueue.enqueue(3)
const size = priorityQueue.size() // 3isEmpty(): Boolean
判断队列是否为空。
returns Boolean: true 代表队列为空, false 代表非空。
const empty1 = priorityQueue.isEmpty() // true
priorityQueue.enqueue(1)
const empty2 = priorityQueue.isEmpty() // false以数组形式返回
returns Array: 数组
// priorityQueue: [12, 3, 5], comparator: default
const arr=priorityQueue.toArray() // [12,3,5]清空队列。
// priorityQueue: [12, 3, 5], comparator: default
priorityQueue.claer() // []