JavaScript实现优先队列

优先队列

  • 队列是一种遵循先进先出性质的由有限个数据元素构成的线性表。
  • 优先队列是一种特殊的队列,它不遵循简单的先进先出规则,而是由优先级决定出队顺序,优先级更高的更早出队。这就类似于去医院看病,病情更紧急的患者具有更高的优先级,先接受诊治。
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;
    }
}
  • 我们约定priority越小,说明优先级越高。

  • 我们首先创建了三个数据元素,item1的值是1,priority是5;item2的值是3,priority是3;item3的值是0,priority是1。

  • 将三个数据元素入队之后,我们发现priority最小(优先级最高)的0将第一个出队。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值