最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列

 更新時(shí)間:2022年01月24日 14:20:57   作者:bear*6  
這篇文章主要介紹了JavaScript如何實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列,在計(jì)算機(jī)里,隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。就跟我們平時(shí)排隊(duì)一樣,先到的排在前面,前面的優(yōu)先處理,下面我們就來看看在JavaScript里面的優(yōu)先隊(duì)列又當(dāng)如何

一、優(yōu)先級(jí)隊(duì)列介紹

我們知道,普通的隊(duì)列插入一個(gè)元素,數(shù)據(jù)會(huì)被放在后端,并且需要前面所有的元素都處理完成后才會(huì)處理前面的數(shù)據(jù)。但是優(yōu)先級(jí)隊(duì)列,在插入一個(gè)元素的時(shí)候會(huì)考慮該數(shù)據(jù)的優(yōu)先級(jí),和其他數(shù)據(jù)的優(yōu)先級(jí)進(jìn)行比較。比較完成后,可以得出這個(gè)元素在隊(duì)列中的正確位置,其他的處理方式,和基本隊(duì)列的處理方式基本一樣。

優(yōu)先級(jí)隊(duì)列主要考慮的問題:

  • 每個(gè)元素不再只是一個(gè)數(shù)據(jù),而且包含數(shù)據(jù)的優(yōu)先級(jí);
  • 在添加方式中,根據(jù)優(yōu)先級(jí)放入正確的位置。

在日常中也有用到優(yōu)先級(jí)隊(duì)列的例子,比如說醫(yī)院的(急診科)候診室。醫(yī)生會(huì)優(yōu)先處理病情比較嚴(yán)重的患者。計(jì)算機(jī)中,我們也可以通過優(yōu)先級(jí)隊(duì)列來重新排列隊(duì)列中任務(wù)的順序.比如每個(gè)線程處理的任務(wù)重要性不同,我們可以通過優(yōu)先級(jí)的大小,來決定該線程在隊(duì)列中被處理的次序。

二、優(yōu)先級(jí)隊(duì)列封裝

優(yōu)先級(jí)隊(duì)列的操作和隊(duì)列的操作方法基本相同,但是插入操作有所不同,所以,我們這里主要是來實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列的插入操作。

比如說我們現(xiàn)在要根據(jù)某個(gè)數(shù)據(jù)的優(yōu)先級(jí)來插入元素,這里我們先創(chuàng)建一個(gè)類來封裝優(yōu)先級(jí)隊(duì)列,并在其內(nèi)部創(chuàng)建一個(gè)構(gòu)造函數(shù)來保存元素的優(yōu)先級(jí)和數(shù)據(jù),再添加一個(gè)屬性用于存放元素。

代碼如下:

function PtiorityQueue(){
            var items = [];
            //封裝一個(gè)新的構(gòu)造函數(shù),用于保存元素和元素的優(yōu)先級(jí)
            function queueElement(element,priority){
                this.element = element;
                this.priority = priority;
            }
        }

創(chuàng)建完成后,在來實(shí)現(xiàn)其的插入操作:

  • 如果隊(duì)列內(nèi)部沒有元素,則直接插入
  • 如果要插入的元素的優(yōu)先級(jí)小于隊(duì)列內(nèi)部元素的優(yōu)先級(jí),則排序后插入。

具體實(shí)現(xiàn)代碼如下:

function PtiorityQueue(){
   this.items = [];
    //封裝一個(gè)新的構(gòu)造函數(shù),用于保存元素和元素的優(yōu)先級(jí)
    function QueueElement(element,priority){
        this.element = element;
        this.priority = priority;
    }
     //1.實(shí)現(xiàn)插入方法
     PtiorityQueue.prototype.enqueue = function(element,priority){
        //1.創(chuàng)建queueElement對(duì)象
        var queueElement = new QueueElement(element,priority);
        //2.判斷隊(duì)列是否為空
        if(this.items.length == 0){
            this.items.push(queueElement);
        }else{
            var flag = false;
            for(var 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)
            }
        }
     }
}

輸入測(cè)試數(shù)據(jù)為:

var pq = new PtiorityQueue();
        pq.enqueue('d',30)
        pq.enqueue('c',50)
        pq.enqueue('a',100)
        pq.enqueue('b',60)
        pq.enqueue('e',20)
        console.log(pq);

打印結(jié)果為:

到此這篇關(guān)于JavaScript實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列的文章就介紹到這了,更多相關(guān)優(yōu)先級(jí)隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

延寿县| 商城县| 南岸区| 平武县| 瑞金市| 区。| 聊城市| 杂多县| 天等县| 墨玉县| 收藏| 平泉县| 崇明县| 左云县| 江达县| 望奎县| 安龙县| 岱山县| 安达市| 舟曲县| 襄垣县| 杭锦后旗| 新闻| 剑川县| 东阿县| 吴堡县| 扎兰屯市| 建水县| 大庆市| 漯河市| 泊头市| 磐安县| 西华县| 徐闻县| 富民县| 庄浪县| 河曲县| 吴江市| 河间市| 邯郸县| 陈巴尔虎旗|