Maison >interface Web >js tutoriel >Analyse de la file d'attente prioritaire et de la file d'attente circulaire de JS

Analyse de la file d'attente prioritaire et de la file d'attente circulaire de JS

php中世界最好的语言
php中世界最好的语言original
2018-04-16 11:42:121696parcourir

Cette fois, je vais vous présenter la file d'attente prioritaire et la file d'attente cyclique pour l'analyse de JS Quelles sont les précautions pour l'analyse de la file d'attente prioritaire et de la file d'attente circulaire JS, comme suit C'est un cas pratique, jetons-y un coup d'œil.

File d'attente prioritaire

Implémentez une file d'attente prioritaire : définissez la priorité puis ajoutez l'élément à la bonne position.

Ce que nous implémentons ici est une file d'attente à priorité minimale, et les éléments avec de petites valeurs de priorité (priorité élevée) sont placés en tête de la file d'attente.

//创建一个类来表示优先队列
function Priorityqueue(){
  var items=[];//保存队列里的元素
  function QueueEle(e,p){//元素节点,有两个属性
    this.element=e;//值
    this.priority=p;//优先级
  }
  this.enqueue=function(e,p){//添加一个元素到队列尾部
    var queueEle=new QueueEle(e,p);
    var added=false;
    //priority小的优先级高,优先级高的在队头
    if(this.isEmpty()){
      items.push(queueEle);
    }else{
      for(var i=0;i<items.length>queueEle.priority){
          items.splice(i,0,queueEle);
          added=true;
          break;
        }
      }
      if(!added){
        items.push(queueEle);
      }
    }
  }
  this.isEmpty=function(){
    return items.length==0;
  }
  this.dequeue=function(){
    return items.shift();
  }
  this.clear=function(){
    items=[];
  }
  this.print=function(){
    console.log(items);
  }
  this.mylength=function(){
    return items.length;
  }
}
var pqueue=new Priorityqueue();
pqueue.enqueue('a',2);
pqueue.enqueue('b',1);
pqueue.enqueue('c',2);
pqueue.enqueue('d',2);
pqueue.enqueue('e',1);
pqueue.print();
//[ QueueEle { element: 'b', priority: 1 },
// QueueEle { element: 'e', priority: 1 },
// QueueEle { element: 'a', priority: 2 },
// QueueEle { element: 'c', priority: 2 },
// QueueEle { element: 'd', priority: 2 } ]</items.length>

Résultats en cours d'exécution :

Analyse de la file dattente prioritaire et de la file dattente circulaire de JS

Ajoutez des éléments à la bonne position : Si la file d'attente est vide, vous pouvez directement mettre l'élément en file d'attente. Sinon, vous devez comparer la priorité de cet élément avec d'autres éléments. Lorsqu'un élément de priorité inférieure à l'élément à ajouter est trouvé, le nouvel élément est inséré avant lui. De cette manière, pour les autres éléments de même priorité mais ajoutés en premier à la file d'attente, nous suivons également le premier entré. principe du premier sorti.

File d'attente à priorité maximale : les éléments avec des valeurs de priorité plus élevées sont placés en tête de la file d'attente.

File d'attente circulaire

Réalisez le jeu du tambour et du passage des fleurs.

//创建一个类来表示队列
function Queue(){
  var items=[];//保存队列里的元素
  this.enqueue=function(e){//添加一个元素到队列尾部
    items.push(e);
  }
  this.dequeue=function(){//移除队列的第一项,并返回
    return items.shift();
  }
  this.front=function(){//返回队列的第一项
    return items[0];
  }
  this.isEmpty=function(){//如果队列中部包含任何元素,返回true,否则返回false
    return items.length==0;
  }
  this.mylength=function(){//返回队列包含的元素个数
    return items.length;
  }
  this.clear=function(){//清除队列中的元素
    items=[];
  }
  this.print=function(){//打印队列中的元素
    console.log(items);
  }
}
//击鼓传花
function hotPotato(namelist,num){
  var queue=new Queue();
  for(var i=0;i<namelist.length>1){
    for(i=0;i<num var console.log><p style="text-align: left;">
Obtenez une liste et ajoutez tous les noms à la file d’attente. Étant donné un numéro, la file d’attente est itérée. Supprimez un élément de la tête de la file d'attente et ajoutez-le à la queue de la file d'attente pour simuler une file d'attente circulaire. Une fois que le nombre de passes atteint un nombre donné, la personne qui a obtenu la fleur est éliminée. Lorsqu'il ne reste qu'une seule personne à la fin, c'est lui qui est le gagnant. </p>
<p>Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php ! </p>
<p>Lecture recommandée : </p>
<p><a href="http://www.php.cn/js-tutorial-392833.html" target="_blank">Explication détaillée de l'utilisation du composant éditeur de texte de BootStrap Summernote</a><br></p>
<p><a href="http://www.php.cn/js-tutorial-392831.html" target="_blank">Composant de recherche d'opération à afficher sur le clavier</a><br></p>
<!--content end--></num></namelist.length>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn