本文源码 这里
概念
1.优先队列和队列的主要区别就是,队列中每个元素不仅含有自身的元素,还有一个代表该元素优先级的标识。
2.在插入新的元素到队列时,根据该元素的优先级来决定它插入的正确位置。
3.优先队列具有最高级先出队列的行为特征
封装优先级队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| function PriorityQueue() { this.items = []; function QueueElement(element, priority) { this.element = element; this.priority = priority; }; PriorityQueue.prototype.enqueue = function (element, priority) { let queueElement = new QueueElement(element, priority); if (this.items.length===0) { this.items.push(queueElement); } else { let added=false; for(let i in this.items){ if(queueElement.priority<this.items[i].priority){ this.items.splice(i,0,queueElement); added=true; break; } }; if (!added) { this.items.push(queueElement); }; } } }
|
测试代码
| let pq = new PriorityQueue(); pq.enqueue('a',1); pq.enqueue('b',20); pq.enqueue('taotao',19); console.log(pq.items);
|