Blasensortierung: Es wird die Elemente in einem Array von groß bis klein oder von klein bis groß anordnen.
var array = [9,8,7,6,5,4,3,2,1];
Vergleich der ersten Runde: 8,7,6,5,4,3,2,1,9 tauschte 8 Mal i = 0 J = Array.Length-1-i aus
Vergleich der zweiten Runde: 7,6,5,4,3,2,1,8,9 siegte 7-mal i = 1 J = Array.Length-1-I
Der Vergleich der dritten Runde: 6,5,4,3,2,1,7,8,9 Swap 6-mal i = 2 J = Array.Length-1-I
4. Runde Vergleich: 5,4,3,2,1,6,7,8,9 5-mal i = 3 J = Array.Length-1-i
Vergleich der fünften Runde: 4,3,2,1,5,6,7,8,9 Vierfache I = 4 J = Array.Length-1-I getauscht
Vergleich der sechsten Runde: 3,2,1,4,5,6,7,8,9 tauschte dreimal i = 5 J = Array.Length-1-I aus
Vergleich der 7. Runde: 2,1,3,4,5,6,7,8,9 2-mal i = 6 J = Array.Length-1-i ausgetauscht
8. Runde Vergleich: 1,2,3,4,5,6,7,8,9 tauschte 1 Zeit i = 7 J = Array.Length-1-i
Code -Implementierung:
var temp; var array = [9,8,7,6,5,4,3,2,1]; // Anzahl externer Schleifenkontrollrunden für (var i = 0; i <array.length-1; i ++) {// Anzahl der internen Loop-Kontrollzeiten für (var j = 0; // zwei Variablen temp = Array [j] auszutauschen; Array [j] = Array [j+1]; Array [j+1] = temp; }}} console.log (Array);Codeoptimierung:
var temp, bool, m = 0; var array = [9,8,7,6,5,4,3,2,1]; für (var i = 0; i <array.length-1; i ++) {// bool im Öffnungs- und Schlussprinzip bool = true; für (var j = 0; j <array.length-1-i; j ++) {if (Array [j]> Array [j+1]) {// Tausch zwei Variablen temp = array [j]; Array [j] = Array [j+1]; Array [j+1] = temp; bool = false; // Schalter}} // Wenn die IF in der inneren Schleife nicht ausgeführt wird (der Schalter wird ausgeschaltet, führen Sie die folgende Anweisung aus); if (bool) {break; } m ++;} console.log (Array+", vergleiche"+m+"Rad");Hinweis: Der beste Fall von Vergleichsrunden ist 0 Runden, und der schlimmste Fall sind 8 Runden.
Schauen wir uns einen Blasensortieralgorithmus an
// JavaScript -Blasensortierung und direkt zum Prototyp des Basistyps // Hier verwenden wir einen JavaScript -Sprach -Essence -Code, um dem Grundtyp -Prototyp Methoden hinzuzufügen. // Da Array und String selbst Konstruktoren sind, erstellen sie Objekte über die neue Konstruktor -Linie, also array.prototype und String.Prototype alle Punkte zu Funktion.Prototype // Wenn Array.Method, erster Zugriffs -Funktionsfunktionsobjekt gibt keine Methode -Funktion. if (! this.prototype [name]) {// Es ist am besten zu beurteilen, ob es zuerst im Prototyp diese Methode gibt. Wenn dies.Prototyp [Name] = func; } zurückgeben; }; Array.Method ('bubble', function () {// Der Bubble-Algorithmus schleift die Länge des Arrays insgesamt, dh, len-Zeiten, und der kleinste wird am letzten var len = diese. {console.log () if (this [j]> [j+1]) {tmp = this [j]; Alarm ([21,32,1,31,22,45,68,37,]. Bubble ());Ich schaute mir den Code eines anderen Front-End-Ingenieurs, Xifeng Shouma, an. In der ersten Schleife ist eine Austauschaustauschflagge falsch. Wenn es einen Austausch gibt, wird es wahr. Ein Urteil wird nach der zweiten Schicht für Schleife addiert. Wenn es falsch ist, das heißt, es gibt keinen Austausch von vorne nach hinten, und es beweist, dass die Größenreihenfolge korrekt ist.
// Arrays, die sortiert werden müssen, var list = Array (23, 45, 18, 37, 92, 13, 24); // Array Länge var n = list.length; // vorübergehende Variablen in Exchange Order var tmp; ///// Exchange Flag Var Exchange; // höchstens n -1 -Orden (var time = 0; time <n - 1; time ++) {Exchange = false; für (var i = n - 1; i> Zeit; i-) {if (list [i] <list [i - 1]) {Exchange = true; tmp = list [i - 1]; Liste [i]; Liste [i] = tmp; }} // Wenn es in dieser Reihenfolge keinen Austausch gibt, wird der Algorithmus frühzeitig beendet, wenn (! Exchange) {Break; }} alert ('Array sortiert ist:' + list + ', n wurde insgesamt' + time + 'Walk') angeordnet;Ich habe schon einmal den Algorithmus eines Internetnutzer gesammelt, was ziemlich gut ist. Bitte schauen Sie es sich an.
Funktion Bubblesort (Array) {var length = array.length; var temp; var issort = false; für (var i = 1; i <länge; i ++) {issort = false; für (var j = 0; j <Länge - i; j ++) {if (Array [j]> Array [j+1]) {// Swap temp = array [j]; Array [j] = Array [j+1]; Array [j+1] = temp; issort = true; }} if (! issort) break; // Wenn kein Austausch auftritt, beenden Sie die Schleife}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (Array); für (var i = 0; i <array.length; i ++) {document.write (Array [i]+""); }Okay, lasst uns diese heute für Sie zusammenfassen. Ich hoffe, dass es für Freunde hilfreich sein wird, Javascript -Blasensortieren zu lernen.