实现优先级队列
2023-02-18 16:30:13 时间
实现思路
优先级队列和普通队列的区别在于添加元素到队列时会根据传入的数字
数字越小优先级越高
实现代码
/**
* 优先级队列
*/
function PriorityQueue() {
//能创建一个具有优先级的数据的类
function QueueElement(elem, priority) {
this.elem = elem
this.priority = priority
}
//模拟队列
this.items = []
//插入方法
PriorityQueue.prototype.enqueue = function(elem, priority) {
let queueElement = new QueueElement(elem, priority)
if(this.items.length === 0) {
this.items.push(queueElement)
} else {
//标识是否插入
let flag = false
//遍历队列元素
for(let i = 0; i < this.items.length; i++) {
//判断优先级
if(queueElement.priority < this.items[i].priority) {
//插入元素
this.items.splice(i, 0, queueElement)
//更改标识
flag = true
break
}
}
//没有插入 直接添加到队尾
if(!flag) {
this.items.push(queueElement)
}
}
}
//删除队列前端元素
PriorityQueue.prototype.dequeue = function () {
return this.items.shift()
}
//查看队列前端元素
PriorityQueue.prototype.front = function () {
return this.items[0]
}
//查看队列是否为空
PriorityQueue.prototype.isEmpty = function () {
return this.items.length === 0
}
//查看队列中的个数
PriorityQueue.prototype.size = function () {
return this.items.length
}
//toString
PriorityQueue.prototype.toString = function () {
const arr = this.items.map(item => item.elem)
return arr.toString()
}
//清空队列
PriorityQueue.prototype.clear = function () {
this.items = []
}
}
相关文章
- docker高级篇第三章-dockerfile案例之制作自己的centos镜像
- Lightroom Classic 2022 for Mac(Lrc2022) 11.5中文版
- java基于ssh的旅游系统
- java论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码
- java美食论坛系统发帖子系统美食论坛网站美食分享论坛源码
- ACDSee 2023软件下载和安装教程
- ACDSee 2022软件下载和安装教程
- LPCG:用激光点云指导单目的3D物体检测
- ACDSee 2021软件下载和安装教程
- ACDSee 2020软件下载和安装教程
- ACDSee 2019软件下载和安装教程
- 深度学习算法原理——RCNN
- 2023年机器学习趋势分析
- 实时语义SLAM:激光+IMU+GPS/MAV
- VP-SLAM:具有点、线和灭点的单目实时VSLAM
- Adobe Acrobat 9 Pro软件安装教程(一款强大的PDF编辑软件)
- PDF编辑器Acrobat DC(PDF) 功能简介+安装破解
- PDF编辑软件:Adobe Acrobat DC
- Acrobat DC 2019 For Mac软件安装教程
- Acrobat Pro DC2021软件安装教程