js 优先级队列

当我们希望某个优先级权重比较高的数据,展现在最前面,插入数据的时候,应该按照优先级高低来排序,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())

结果为 校长,院长,老师,学生

猜你喜欢

转载自blog.csdn.net/qq_46433453/article/details/124100285