优先队列
- 队列是一种遵循先进先出性质的由有限个数据元素构成的线性表。
- 优先队列是一种特殊的队列,它不遵循简单的先进先出规则,而是由优先级决定出队顺序,优先级更高的更早出队。这就类似于去医院看病,病情更紧急的患者具有更高的优先级,先接受诊治。
function Item(value,priority)
{
this.value = value;
this.priority = priority;
}
function priorityQueue()
{
this.queue = [];
this.enQueue = function(item)
{
this.queue.push(item);
}
this.deQueue = function()
{
let priority = this.queue[0].priority;
let index = 0;
for(let i = 0;i < this.queue.length;i++)
{
if(priority > this.queue[i].priority)
{
index = i;
priority = this.queue[i].priority;
}
}
return [this.queue.splice(index,1)[0].value];
}
this.value = function()
{
let queueForReturn = [];
this.queue.sort((a,b)=>a.priority - b.priority);
for(let i = 0;i < this.queue.length;i++)
{
queueForReturn.push(this.queue[i].value);
}
return queueForReturn;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/c5be138510ad593b94473e73b92277d1.png#pic_center)
- 我们首先创建了三个数据元素,item1的值是1,priority是5;item2的值是3,priority是3;item3的值是0,priority是1。
![](https://i-blog.csdnimg.cn/blog_migrate/a008bfb13efae47ec40a71a841db98d6.png#pic_center)
- 将三个数据元素入队之后,我们发现priority最小(优先级最高)的0将第一个出队。
![](https://i-blog.csdnimg.cn/blog_migrate/1dda469e0c3717994d7446d8ffb75089.png#pic_center)