1. Eine kurze Einführung in Warteschlangen und Stapel
1.1. Grundlegende Konzepte von Warteschlangen
Warteschlange: Es ist eine Sammlung, die erstmals (FIFO) als erstes in das erste Mal unterstützt wird, dh die zuerst eingefügten Daten werden zuerst abgerufen!
Wie in der Abbildung unten gezeigt:
1.2. Grundkonzepte von Stack
Stack: Es ist eine Sammlung, die das Last-In-First-Out (LIFO) unterstützt, dh die später eingefügten Daten werden zuerst abgerufen!
Wie in der Abbildung unten gezeigt:
2. Implementieren Sie Warteschlangen und Stapel in JavaScript
In JavaScript werden Warteschlangen und Arrays hauptsächlich über Arrays implementiert. Die folgenden Methoden sind in JS -Arrays bereitgestellt, um es uns leicht zu machen, Warteschlangen und Stapel zu implementieren:
• Verschiebung: Löschen Sie das erste Element aus dem Array und geben Sie den Wert dieses Elements zurück.
• Entschichtet: Fügen Sie zu Beginn des Arrays ein oder mehrere Elemente hinzu und geben Sie eine neue Länge zurück
• Drücken: Fügen Sie am Ende der Mitte ein Element hinzu und geben Sie die neue Länge zurück
• Pop: Löschen Sie das letzte Element aus dem Array und geben Sie den Wert dieses Elements zurück.
2.1. Warteschlangen implementieren
<skript type = "text/javaScript"> // Erstellen Sie ein Array, um die Warteschlange zu simulieren var a = new array (); console.log (a); // Unschänder console.log ("Enter"); A.unshift () console.log (a); // ------> a.unshift (); console.log (a); // ------>, a.unshift (); console.log (a); //--- ---->, a.unshift (); console.log (a); // ------>, a.unshift (); console.log (a); // ----> ,, a.unshift (); console.log (a); // ----> ,,, console .Log ("" zuerst in, zuerst heraus "); console.log (a); // pop: Löschen Sie das letzte Element aus dem Array und geben Sie den Wert dieses Elements zurück a.pop (); // ------> console.log (a); a.pop (); // ------> console.log (a); a.pop (); // ------> console.log (a); a.pop (); // -----Der Ausgangseffekt auf die Google Browser -Konsole ist in der folgenden Abbildung dargestellt:
2.2. Implementierung des Stapels
<skript type = "text/javaScript"> // Erstellen Sie ein Array, um den Stapel var a = new Array () zu simulieren.log (a); // Drücken: Fügen Sie ein oder mehrere Elemente am Ende des Arrays hinzu und geben Sie die neue Länge zurück console.log ("stack"); a.push () console.log (a); // ------> a.push (); console.log (a); // ------>, a.push (); console.log (a); // ----- ->, a.push (); console.log (a); // ------>, a.push (); console.log (a); // ----> ,, a.push (); console Aus dem Stapel, zuerst aus "); Konsole.log (a); // Pop: Löschen Sie das letzte Element aus dem Array und geben Sie den Wert dieses Elements zurück a.pop (); // ------> console.log (a); a.pop (); // ------> console.log (a); a.pop (); // ------> console.log (a); a.pop (); // -----Der Ausgangseffekt auf die Google Browser -Konsole ist in der folgenden Abbildung dargestellt:
2.3. Leistungsprüfung der Push -Methode und der Unschärfungsmethode
Arrays Push- und Unschuhmethoden können dem aktuellen Array Elemente hinzufügen. Der Unterschied besteht darin, dass Push am Ende hinzugefügt wird, während am Anfang Unschub hinzugefügt wird. Aus dem Prinzip können wir wissen, dass die Effizienz von Unshift relativ niedrig ist. Der Grund dafür ist, dass jedes Mal, wenn es ein Element hinzufügt, das vorhandene Element eine Position nach unten bewegt. Aber wie groß ist der Effizienzunterschied? Machen wir unten einen einfachen Test.
<script type = "text/javaScript">/*Die Erläuterung des Tricks Erläuterung von "var s =+newDate ();" im Code ist wie folgt: =+Dieser Operator existiert nicht;+ist äquivalent zu .ValueOf ();+neues Datum () ist mit neuem Datum (). ValueOf () // Die Ergebnisse geben die Millisekunden des aktuellen Zeitpunkts zurück, alarm (+new Date ()); Alert (+neues Datum); var s = New Date (). = []; var startTime = +neues Datum (); //+neues Datum () ist dem neuen Datum (). ValueOf () entspricht, und gibt die Millisekunden der aktuellen Zeit zurück // Push -Leistungstest für (var i =; i <; i ++) {arr.push (i); } var endzeit =+neues Datum (); console.log ("Es braucht Zeit, um die Push-Methode aufzurufen, um dem Array ein Element hinzuzufügen"+(Endime-StartTime)+"MS"); StartTime = +neues Datum (); arr = []; // Unschänderungstest für (var i =; i <; i ++) {arr.unshift (i); } endTime =+neues Datum (); console.log ("Es dauert Zeit, die Unschänder-Methode aufzurufen, um dem Array ein Element hinzuzufügen"+(Endime-StartTime)+"MS"); </script>Dieser Code führt 100.000 Push- bzw. unerschütterliche Vorgänge aus und führt ihn einmal im Google -Browser aus. Das Ergebnis ist in der folgenden Abbildung dargestellt:
Es ist zu sehen, dass Unschänder etwa 100 -mal langsamer ist als Push! Daher sollten Sie im täglichen Leben vorsichtig mit Vorsicht verwenden, insbesondere für große Arrays. Wenn Sie den Effekt von Unschänder erzielen müssen, können Sie die Reverse -Methode von Array verwenden, die ein Array umkehren kann. Fügen Sie zuerst die Elemente hinzu, die mit Push in das Array eingebracht werden sollen, und führen Sie dann wieder umgekehrt aus, um den Effekt von Unschänder zu erzielen. Zum Beispiel:
<script type = "text/javaScript"> // Erstellen Sie ein Array, um den Stapel var a = new Array () zu simulieren; // Verwenden Sie die Push-Methode, um Elemente A.push () a.push (); A.push (); A.push (); console.log ("Die Reihenfolge der Elemente im Array vor dem Array, das das Array umgekehrt ist. Umgekehrt bezeichnet, das ein Array umkehren kann. Fügen Sie zuerst die Elemente hinzu, die mit Push in das Array eingebracht werden sollen, und führen Sie dann wieder umgekehrt durch, und der Effekt von Unschub wird erreicht.Der Ausgangseffekt auf die Google Browser -Konsole ist in der folgenden Abbildung dargestellt:
Nach den laufenden Ergebnissen wurde die Reihenfolge der Array -Elemente rückgängig gemacht.
2.4. Leistungsprüfung der Reverse -Methode
Was ist die Leistung von Reverse? Testen wir es erneut:
<script type = "text/javaScript"> var arr = [], s = +neues Datum; für (var i =; i <; i ++) {arr.push (i); } // Rufen Sie die Reverse -Methode auf, um die Reihenfolge der Elemente im Array arr.Reverse () umzukehren; console.log ("Reverse -Methode aufrufen, um die Reihenfolge der Elemente im Array umzukehren:"+(+neues Datum - s)+"MSEC"); </script>Der Ausgangseffekt auf die Google Browser -Konsole ist in der folgenden Abbildung dargestellt:
Aus dem Laufeffekt können wir erkennen, dass die umgekehrte Methode eine extrem hohe Leistung aufweist und mit Vertrauen verwendet werden kann.
Das obige ist eine Zusammenfassung der Implementierung von Warteschlangen und Stapeln durch Arrays in JavaScript, und ich habe einfach die Leistungsvorteile und Nachteile von Push, Entschaltung und Umkehrung in den Betrieb großer Arrays getestet.
Das obige ist die Warteschlange und Stapel in der vom Editor eingeführten JavaScript -Array -Implementierungsdatenstruktur. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!