<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      javascript實現優先隊列

      1.概念

          一般情況下從隊列中刪除元素,都是率先入隊的元素。但是有些使用隊列的情況不遵循先進先出的原則,這就是插隊,這需要使用優選隊列的數據結構來進行描述。

          從優先隊列中刪除元素的時候,需要考慮優先級的限制。比如醫院急診科的例子就是一個典型的優先隊列的例子。當病人進入急診室的時候,護士先根據病情給一個優先級代碼,高優先級的患者先于低優先級的患者就醫,優先級相同的根據先來先服務的順序就醫。

          定義存儲隊列元素的對象,然后構建優先隊列數據結構。    

      function Patient(name, code) {
          this.name = name;
          this.code = code;
      }

          變量code是一個整數,標識患者優先級或者病情驗證程度,規定優先級代碼越小優先級越高。新的dequeue() 方法遍歷隊列的底層存儲數組,從中找出優先碼最低的元素,然后使用數組的splice() 方法刪除優先級最高的元素。新的dequeue() 方法定義如下所示:

      function dequeue(){
          var priority = this.dataStore[0].code;
          var fromIndex = 0;
          for (var i=1; i<this.dataStore.length; ++i) {
              if (this.dataStore[i].code < priority) {
                  fromIndex = i;
              }
          }
          return this.dataStore.splice(fromIndex, 1);
      }

          dequeue() 方法使用簡單的順序查找方法尋找優先級最高的元素(優先碼越小優先級越高,比如,1 比5 的優先級高)。該方法返回包含一個元素的數組——從隊列中刪除的元素。

       

      2.代碼實現

          完整的代碼如下所示: 

      /*--------------Queue類的定義和測試代碼----------------*/
      function Queue(){
              this.dataStore = [];
              this.enqueue = enqueue;
              this.dequeue = dequeue;
              this.front = front;
              this.back = back;
              this.toString = toString;
              this.empty = empty;
      }
      
      //入隊,就是在數組的末尾添加一個元素
      function enqueue(element){
          this.dataStore.push(element);
      }
      //出隊,判斷優先級刪除,注意這里用的是數組的splice方法,不是slice方法
      function dequeue(){
          var priority = this.dataStore[0].code;
          var fromIndex = 0;
          for (var i=1; i<this.dataStore.length; ++i) {
              if (this.dataStore[i].code < priority) {
                  fromIndex = i;
              }
          }
          return this.dataStore.splice(fromIndex, 1);
      }
      //取出數組的第一個元素
      function front(){
          return this.dataStore[0];
      }
      //取出數組的最后一個元素
      function back(){
          return this.dataStore[this.dataStore.length-1];
      }
      
      function toString(){
          var retStr = "";
          for (var i=0; i<this.dataStore.length; ++i) {
              retStr += "病人:" + this.dataStore[i].name + " 優先級:" + this.dataStore[i].code + "<br>"
          }
          return retStr;
      }
      //判斷數組是否為空
      function empty(){
          if(this.dataStore.length == 0){
              return true;
          }else{
              return false;
          }    
      }
      //返回數組中元素的個數
      function count(){
          return this.dataStore.length;
      }
      
      /*----------------基數排序-----------------*/
      
      
      function Patient(name, code){
          this.name = name;
          this.code = code;
      }
      var p = new Patient('smith', 5);
      var ed = new Queue();
      ed.enqueue(p);
      
      p = new Patient('jones', 4);
      ed.enqueue(p);
      
      p = new Patient('fehrendbach', 6);
      ed.enqueue(p);
      
      p = new Patient('brown', 1);
      ed.enqueue(p);
      
      p = new Patient('ingram', 1);
      ed.enqueue(p);
      
      document.write(ed.toString());
      
      var seen = ed.dequeue();
      document.write('<br>');
      document.write("服務病人:" + seen[0].name);
      
      document.write('<br>');
      document.write(ed.toString());
      
      seen = ed.dequeue();
      document.write('<br>');
      document.write("服務病人:" + seen[0].name);
      
      document.write('<br>');
      document.write(ed.toString());
      
      
      seen = ed.dequeue();
      document.write('<br>');
      document.write("服務病人:" + seen[0].name);
      
      document.write('<br>');
      document.write(ed.toString());

      輸出結果為:

       

      posted @ 2016-09-05 23:21  nd  閱讀(3761)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产婷婷精品av在线| 国产在线午夜不卡精品影院| 在线观看中文字幕国产码| 亚洲AV日韩AV激情亚洲| 亚洲综合国产成人丁香五| 精品国产欧美一区二区五十路| 九九热精品在线观看| 国产成人av电影在线观看第一页 | 精品人妻二区中文字幕| 亚洲蜜臀av乱码久久| 国产在线中文字幕精品| 线观看的国产成人av天堂| 国产偷国产偷亚洲清高APP| 中文字幕国产日韩精品| 国产精品一区二区三区黄| 亚洲中文字幕无码日韩精品| 久久精品这里热有精品| av中文字幕在线二区| 婷婷综合亚洲| 亚洲精品免费一二三区| 老熟女高潮一区二区三区| 国产精品国产精品无卡区| 日本欧美大码a在线观看| 亚洲欧洲日韩精品在线| 好吊妞| 亚洲av永久无码精品漫画| 国产精品线在线精品国语| 国产精品白浆在线观看免费| 国产av午夜精品福利| 97久久精品人人澡人人爽| 狠狠五月深爱婷婷网| 国产日韩精品一区在线不卡| 亚洲狼人久久伊人久久伊| 国产性三级高清在线观看| 无码人妻斩一区二区三区| 亚洲国产成人久久77| 久久精品国产久精国产| 爱性久久久久久久久| 亚洲天堂男人天堂女人天堂| 永久无码天堂网小说区| 亚洲精品国产一二三区|