js利用数组实现优先级队列和前面队列类似

大家好,我是猿二哥,今天我想和大家一起分享一下我最近的学习数据结构的心得,今天我们学习利用js的数组实现优先级队列。
原理:优先级队列类似与开始那种队列的升级版本,比如说有人排队买菜,本来我们是排队,后来呢,有认识VIP,他就具有优先级,而我们的优先级队列就是按照优先级这个序列来排序的。
//封装对象
function queueObj(element, priority) {
this.element = element;
this.priority = priority;
}
class priorityQueue {
constructor() {
this.items = [];
}

enqueue(element, priority) {
let queueobj = new queueObj(element, priority);
console.log(queueobj);
if (this.isEmpty()) {
this.items.push(queueobj); //添加元素到末尾
} else {
let addad = false;
for (let i = 0; i < this.items.length; i++) {
if (priority < this.items[i].priority) {
this.items.splice(i, 0, queueobj);
addad = true;
break;
}
}
if (!addad) {
this.items.push(queueobj);
}
}
}
isEmpty() {
return this.items.length === 0;
}

size() {
return this.items.length;
}
dequeue() {
/**
*push()方法可以在数组的末属添加一个或多个元素
*shift()方法把数组中的第一个元素删除
*unshift()方法可以在数组的前端添加一个或多个元素
*pop()方法把数组中的最后一个元素删除
*/
return this.items.shift(); //移除数组的前一个项,长度减1
}
print() {
return console.info(this.items);
}
}
let queue = new priorityQueue();
console.log("队列是否为空: " + queue.isEmpty());
queue.enqueue("Mr.A", 5);
queue.enqueue("Mr.B", 4);
queue.enqueue("Mr.C", 3);
console.log("当前队列:");
queue.print();
console.log("出队的人: " + queue.dequeue());
console.log("当前队列:");
queue.print();

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前面我们学习了栈的实现,队列和栈非常类似,但是使用了不同的原则,而非后进先出。 队列是遵循FIFO(First I...
    小刀爱编程阅读 4,770评论 0 0
  • 作者:同梦奇缘链接:https://segmentfault.com/a/1190000017905515 一、认...
    grain先森阅读 14,853评论 0 14
  • 如需转载, 请咨询作者, 并且注明出处.有任何问题, 可以关注我的微博: coderwhy, 或者添加我的微信: ...
    coderwhy阅读 13,332评论 9 44
  • 冒泡排序 算法步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一...
    夜雨惊人阅读 3,870评论 0 3
  • 队列是一种先进先出的数据结。队列只能在队尾插入元素,在队首删除元素,这点和栈不一样。它用于存储顺序排列的数据。队列...
    天街夜雨阅读 3,258评论 0 0

友情链接更多精彩内容