温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

js优先队列怎么实现

发布时间:2021-09-07 11:00:09 来源:亿速云 阅读:172 作者:小新 栏目:编程语言

这篇文章主要介绍了js优先队列怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

在优先队列中,元素的添加或者删除是基于优先级的。

实现优先队列有两种方式:

1、优先添加,正常出列。在实现队列的基础上,把添加进队列的元素从普通数据改为对象(数组)类型,该对象包含需要添加进队列的元素的值和优先级。

2、正常添加,优先出列。

实例

function PriorityQueue() {     //初始化队列(使用数组实现)     var items = []     //因为存在优先级,所以插入的列队应该有一个优先级属性     function queueEle(ele, priority) {         this.ele = ele         this.priority = priority     }     //入队     this.enqueue = function (ele, priority) {         let element = new queueEle(ele, priority)         //为空直接入队         if (this.isEmpty()) {             items.push(element)         }         else {             var qeueued = false; //是否满足优先级要求,并且已经入队             for (let i = 0; i < this.size(); i++) {                 if (element.priority < items[i].priority) {                     items.splice(i, 0, element)                     qeueued = true                     break;                 }             }             //如果不满足要求,没有按要求入队,那么就直接从尾部入队             if (!qeueued) items.push(element)         }     }     //出队     this.dequeue = function () {         return items.shift()     }     //返回首元素     this.front = function () {         return items[0]     }     //队列是否为空     this.isEmpty = function () {         return items.length == 0     }     //清空队列     this.clear = function () {         items = []     }     //返回队列长度     this.size = function () {         return items.length     }     //查看列队     this.show = function () {         return items     } } var priorityQueue = new PriorityQueue(); priorityQueue.enqueue('优先级2-1', 2); priorityQueue.enqueue('优先级1-1', 1); priorityQueue.enqueue('优先级1-2', 1); priorityQueue.enqueue('优先级3-1', 3); priorityQueue.enqueue('优先级2-2', 2); priorityQueue.enqueue('优先级1-3', 1); priorityQueue.show(); // 按优先级顺序输出 //输出 [ 0:queueEle {ele: "优先级1-1", priority: 1}, 1:queueEle {ele: "优先级1-2", priority: 1}, 2:queueEle {ele: "优先级1-3", priority: 1}, 3:queueEle {ele: "优先级2-1", priority: 2}, 4:queueEle {ele: "优先级2-2", priority: 2}, 5:queueEle {ele: "优先级3-1", priority: 3} ]

感谢你能够认真阅读完这篇文章,希望小编分享的“js优先队列怎么实现”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI