当我们希望某个优先级权重比较高的数据,展现在最前面,插入数据的时候,应该按照优先级高低来排序,js的优先级队列最为合适。
比如有这样一组数据
校长 院长 老师 学生 他们的权重依次为 0 1 2 3,在乱序的情况下如何,按照权重依次插入
//优先级队列
class QueueElement {
// 专门用来初始化数据
constructor(element, priority) {
this.element = element
this.priority = priority
}
}
// 插入
class PriorityQueue {
constructor() {
this.list = []
}
enqueue(element, priority) {
if (this.size() == 0) {
// 最开始直接插入
this.list.push(new QueueElement(element, priority))
}
else{
for(let i = 0; i < this.list.length; i++){
if(priority < this.list[i].priority){
//按照权重插入
this.list.splice(i,0,new QueueElement(element, priority))
return
}
}
this.list.push(new QueueElement(element, priority))
return
}
}
size() {
return this.list.length
}
string(){
const result = this.list.map(item => {
return item.element
})
return result.toString()
}
}
来测试下数据
const priorityQueue = new PriorityQueue()
priorityQueue.enqueue('院长',1)
priorityQueue.enqueue('老师',2)
priorityQueue.enqueue('学生',3)
priorityQueue.enqueue('校长',0)
console.log(priorityQueue.string())
结果为 校长,院长,老师,学生