js 数组实现优先级队列

112 阅读1分钟
    //优先级队列实现
    function PriorityQueue() {

        //函数内部类
        function StorageElement(element, priority) {
            this.element = element;
            this.priority = priority;
        }
        //属性
        this.items = [];

        //队列的插入 和 追加
        PriorityQueue.prototype.enqueue = function (element, priority) {

            let storageElement = new StorageElement(element, priority);

            //如果队列中没有element的话直接push到 数组中
            if (this.items.length === 0) {

                this.items.push(storageElement);
                
            } else {
                let isTrue = false;
                //遍历items 数组  是splice还是push
                for (let i = 0; i < this.items.length; i++) {
                    // 比较数组中priority的优先级

                    if (this.items[i].priority > storageElement.priority) {
                        this.items.splice(i, 0, storageElement);
                        isTrue = true;
                        break;
                    }
                }
                if (!isTrue) {
                    this.items.push(storageElement);
                }
            }
        }
    }

    let priorityQueue = new PriorityQueue();