Implementieren der Prioritätswarteschlange in JavaScript

Implementieren der Prioritätswarteschlange in JavaScript

1. Einführung in die Prioritätswarteschlange

Wir wissen, dass beim Einfügen eines Elements in eine normale Warteschlange die Daten am hinteren Ende platziert werden und die vorherigen Daten erst verarbeitet werden, wenn alle vorherigen Elemente verarbeitet sind. Allerdings berücksichtigt die Prioritätswarteschlange beim Einfügen eines Elements die Priorität der Daten und vergleicht sie mit der Priorität anderer Daten. Nach Abschluss des Vergleichs kann die korrekte Position dieses Elements in der Warteschlange ermittelt werden. Die anderen Verarbeitungsmethoden sind grundsätzlich dieselben wie bei der Basiswarteschlange.

Bei Prioritätswarteschlangen müssen vor allem folgende Aspekte berücksichtigt werden:

  • Jedes Element ist nicht mehr nur ein Datenstück, sondern enthält auch die Priorität der Daten;
  • In der Add-Methode entsprechend der Priorität an die richtige Position setzen.

Es gibt auch Beispiele für Prioritätswarteschlangen im täglichen Leben, etwa in Wartezimmern von Krankenhäusern (Notaufnahme). Die Ärzte werden Patienten mit schwerwiegenderen Erkrankungen den Vorzug geben. In Computern können wir Prioritätswarteschlangen auch verwenden, um die Reihenfolge der Aufgaben in der Warteschlange neu zu ordnen. Beispielsweise ist die Wichtigkeit der von jedem Thread verarbeiteten Aufgaben unterschiedlich, und wir können die Größe der Priorität verwenden, um die Reihenfolge zu bestimmen, in der der Thread in der Warteschlange verarbeitet wird.

2. Kapselung der Prioritätswarteschlange

Die Funktion der Prioritätswarteschlange ist grundsätzlich dieselbe wie die der Warteschlange, aber die Einfügefunktion ist unterschiedlich. Daher implementieren wir hier hauptsächlich die Einfügefunktion der Prioritätswarteschlange.

Wenn wir beispielsweise Elemente entsprechend der Priorität bestimmter Daten einfügen möchten, erstellen wir zuerst eine Klasse zum Kapseln der Prioritätswarteschlange, erstellen darin einen Konstruktor zum Speichern der Priorität und der Daten des Elements und fügen dann ein Attribut zum Speichern des Elements hinzu.

Der Code lautet wie folgt:

Funktion PtiorityQueue(){
            var Elemente = [];
            //Kapselung eines neuen Konstruktors zum Speichern von Elementen und deren Prioritäten function queueElement(element,priority){
                dieses.element = element;
                this.priority = Priorität;
            }
        }

Nachdem die Erstellung abgeschlossen ist, wird der Einfügevorgang implementiert:

  • Wenn sich kein Element in der Warteschlange befindet, fügen Sie es direkt ein
  • Wenn die Priorität des einzufügenden Elements geringer ist als die Priorität des Elements innerhalb der Warteschlange, wird es nach dem Sortieren eingefügt.

Der spezifische Implementierungscode lautet wie folgt:

Funktion PtiorityQueue(){
   diese.Artikel = [];
    //Kapselung eines neuen Konstruktors zum Speichern von Elementen und deren Prioritäten Funktion QueueElement(element,priority){
        dieses.element = element;
        this.priority = Priorität;
    }
     //1. Implementiere die Einfügemethode PtiorityQueue.prototype.enqueue = function(element,priority){
        //1. Erstellen Sie ein QueueElement-Objekt. var queueElement = new QueueElement(element,priority);
        //2. Bestimmen Sie, ob die Warteschlange leer ist, wenn (this.items.length == 0) {
            dies.items.push(Warteschlangenelement);
        }anders{
            var flag = falsch;
            für(var i =0;i<this.items.length;i++){
                wenn (Warteschlangenelement.Priorität < diese.Elemente[i].Priorität) {
                    this.items.splice(i,0,queueElement);
                    Flagge = wahr;
                    brechen;
                }
            }
            wenn(!flag){
                this.items.push(Warteschlangenelement)
            }
        }
     }
}

Die Eingabetestdaten sind:

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

Das Druckergebnis ist:

Dies ist das Ende dieses Artikels über die Implementierung von Prioritätswarteschlangen in JavaScript. Weitere Informationen zu Prioritätswarteschlangen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der JavaScript-Datenstruktur: Beispiele für Prioritätswarteschlangen und Ringwarteschlangen
  • JavaScript-Warteschlangen, Prioritätswarteschlangen und Ringwarteschlangen

<<:  So erstellen Sie eine Deep-Learning-Umgebung mit Python in einem Docker-Container

>>:  Verwenden Sie das Ansichtsfenster im Meta-Tag, um das Bildschirm-CSS zu definieren

Artikel empfehlen

Natives Javascript+CSS, um den Karusselleffekt zu erzielen

Dieser Artikel verwendet Javascript + CSS, um den...

Detaillierte Erklärung der MySQL-Instanz mit aktiviertem SSD-Speicher

Detaillierte Erklärung der MySQL-Instanz mit akti...

Verwenden von Shadowsocks zum Erstellen eines transparenten LAN-Gateways

Inhaltsverzeichnis Installieren und konfigurieren...

Detaillierte Erklärung, wie eine SQL-Anweisung in MySQL ausgeführt wird

Überblick Ich habe vor Kurzem begonnen, mir Wisse...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

Über die richtige Art und Weise der Zeitumrechnung in JS beim Excel-Import

Inhaltsverzeichnis 1. Grundlagen 2. Problembeschr...

Docker-Batch starten und alle Container schließen

Im Docker Starten Sie alle Containerbefehle Docke...

Detaillierte Schritte zur Neuinstallation von VMware Tools (grafisches Tutorial)

VMware Tools ist ein Tool, das mit virtuellen VMw...

Analyse der Vorteile von path.join() in Node.js

Sie fragen sich möglicherweise, warum Sie die Met...

Win10 Installation Linux System Tutorial Diagramm

Um eine virtuelle Maschine auf einem Windows-Syst...

So installieren Sie Docker mithilfe von Skripten unter Linux Centos

Was ist die Hauptfunktion von Docker? Derzeit gib...

MySQL-Lösung für die Konfiguration mehrerer Instanzen

1.1 Was ist MySQL Multi-Instance? Einfach ausgedr...

HTML implementiert die Funktion zur Erkennung der Eingabevervollständigung

Verwenden Sie „onInput(event)“, um festzustellen,...