Blasenart
Das Prinzip der Blase ist es, das größte Element oder das kleinste Element "schweben" zu machen
Sortieren Sie sortieren, auswählen, schnelle Sortierungen, Blasensorte sind alle Vergleichssortien
Ideen
Vergleichen Sie die beiden benachbarten Zahlen eins nach dem anderen, stellen Sie die Dezimalstellen und die großen Zahlen in den Rücken.
SCHRITT1: Vergleichen Sie die erste und zweite Zahlen, geben Sie die Dezimalzahl vor und die große Zahl danach. Vergleichen Sie die zweite Zahl und die dritte Zahl, setzen Sie die Dezimalzahl vor und nach der großen Zahl so fort, bis die letzten beiden Zahlen verglichen werden, und stellen Sie die Dezimalzahl vor und nach der großen Zahl.
STEP2: Auf der zweiten Reise: Starten Sie immer noch vom ersten Logarithmus (da dies möglicherweise auf den Austausch der zweiten Zahl und die dritte Zahl zurückzuführen ist, ist die erste Zahl nicht mehr kleiner als die zweite Zahl), stellen Sie die Dezimalzahl vor und nach der großen Zahl bis zur vorletzten Zahl (die erste Position ist bereits die größte in der vorletzten Position). Am Ende der zweiten Reise wird an der vorletzten Position eine neue maximale Zahl erhalten (tatsächlich die zweitgrößte Zahl in der gesamten Sequenz).
Wenn dies so weitergeht, wiederholen Sie den obigen Vorgang, bis die Sortierung endgültig abgeschlossen ist.
Da Dezimalstellen immer nach vorne platziert werden und große Zahlen während des Sortierprozesses nach hinten platziert werden, was dem Aufstieg der Blasen entspricht, wird es als Blasensortierung bezeichnet.
Animationseffekt der Blasensortierung
Implementierung: Dieser Code ist relativ einfach und der grundlegendste und grundlegendste Code im Algorithmus. . .
Drei Dinge zu beachten
1. Die Methode zum Austausch von Klassen kann in JavaScript mit a = [b, b = a] [0] gelöst werden.
ersetzen
Die Codekopie lautet wie folgt:
var, a, b, temp
temp = a;
a = b;
B = Temp
Diese Austauschmethode
2. achten
3. achten
Funktion Bubblesort (Array) {var l = array.length; für (var i = 0; i <l; i ++) {// Die Anzahl der verglichenen Schritte ist die Länge des Arrays für (var j = 0; j <li; j ++) {// Die Anzahl der Inline -Börsen wird von der ersten Zahl verglichen. {Array [j] = [Array [j - 1], Array [j - 1] = Array [j]] [0] // Swap -Elemente hier}} für (var k = 0; k <l; k ++) {console.log (Array [k]+","); [6,54,6,22,5,7,8,2,34]; Bubblesort (a);Animationseffekt
Insertion -Sortierung
Es ist sehr einfach, es sind die Schritte für uns, um Karten zu berühren und einzufügen!
Ideen:
1 Nehmen wir zunächst an, wir haben eine Karte berührt, und alle Karten in unseren Händen sind auf leer eingestellt = [] haben einen Druck berührt (arr [0])
2 Nehmen Sie die nächste Karte heraus, stellen Sie sie auf ein, scannen Sie in all unseren Karten leer von hinten nach vorne (bereits sortiert).
3 Wenn die Karte in Ihrer Hand leer ist [leer.
4Repeat Schritt 3 bis die sortierte Karte leer [leer.länge-n] ist geringer als oder gleich a
5 Einlegen Sie a in diese Position leer [leer.länge-n] = a
6 Wiederholung Schritt 2
JavaScript -Code ist jedoch immer noch etwas schwierig zu implementieren. Der Code lautet wie folgt:
Funktion Insert (arr) {var l = arr.length; var leer = []; // leeres Array, das unsere Hand leer angibt. if (arr [i]> leer [leer. Wenn arr <ein gewisses Stück ein geordnetes Array ist, müssen es nicht verschoben werden. leer [j] = leer [j - 1]; // leer bewegen [j - 1] = arr [i]; // den Wert an die leere Position setzen} // console.log (leer)} leer zurückgeben}Dann ist der wichtigere Wissenspunkt hier das && Symbol "und", dh die Bedingungen auf beiden Seiten müssen erfüllt werden, bevor der Ausdruck festgelegt wird.
Das && Symbol kann auch ersetzen, wenn beispielsweise (a) {Fun ()} gleich A && b ist
Ein weiterer sehr wichtiger Punkt
Angenommen, das Array ist arr, ist sein "letzter Element" arr [arr.Length-1].
Animation sortieren
Auswahlsart
Es ist auch ein einfacher Sortieralgorithmus.
Ideen:
Finden Sie das kleinste Element - werfen Sie es in das Array - finden Sie das kleine - werfen Sie es in das Array und so weiter.
Finden Sie zunächst das kleinste Element im ungeortierten Array. Die Methode, die Sie finden, kann die Mittel zur kontinuierlichen Beurteilung und der Zuordnung verwenden, dh das erste Elementarray [0] des Arrays das kleinste Element, dann beträgt die Sequenznummer des "Mindestelements" im Array 0.
Dann über das Array iterieren. Wenn das zweite Element des Arrays kleiner ist, ist das zweite Element das kleinste Element und aktualisiert "0" bis "1".
Nach dem Durchqueren wissen wir, dass das Einweis des kleinsten Elements in dieser Serie "N" ist; Es wird herausgenommen und an der Ausgangsposition der Sortiersequenz gespeichert (Array [n])
Suchen Sie dann weiter nach dem kleinsten Element aus den verbleibenden ungeortierten Elementen und platzieren Sie es dann am Ende der sortierten Sequenz. Beachten Sie, dass der Index des Traverses zu diesem Zeitpunkt von 1 beginnt. Weil wir bereits ein kleinstes Element ausgewählt haben.
Und so weiter, bis alle Elemente sortiert sind.
Function SelectSort (Array) {var min; var l = array.length; // zwischengespeicherte Länge für (var i = 0; i <l; i ++) {// Schleife starten, Schleife insgesamt, und Sie können l -Elemente min = i; // annehmen, dass das erste Smartest -Element (var j = i+1; j <l; j ++) annehmen ist. (Array [min]> Array [j]) // Beurteilen Sie, ob die nachfolgende min = j; // das "minimum" -Sendecript} if (min! Zum Beispiel ist das erste Element des Arrays ich, dann habe ich festgestellt, dass das kleinste Element Array [min] ist, also muss ich diese min mit i austauschen. Und so weiter. Array [i] = [Array [min], Array [min] = Array [i]] [0]; // Elemente Swap}} Return Array;}Was hier immer noch bemerkt wird, ist die Schreibmethode des Exchange -Arrays [i] = [Array [min], Array [min] = Array [i]] [0]
Es ist einfach, Array [i] und Array [min] ~ auszutauschen
Animation sortieren
Schnelle Sortierung
Quick Sort ist derzeit der mächtigste Sortieralgorithmus, der die Idee der Rekursion nutzt.
Ideen
Ein Element aus dem Array auszuwählen, heißt "Benchmark". Dies kann direkt mit Länge/2 ausgewählt werden
Durch das Array werden alle Elemente mit kleiner als dem Referenzwert vor die Referenz platziert, und alle Elemente mit größerem als den Referenzwert werden hinter der Referenz platziert (dieselbe Zahl kann zu beiden Seiten verwendet werden). In Laiengesicht steht der Mann links und die Frau steht rechts. .
Dann erhalten wir ein Array -Array = Array Larray, das aus Teilen besteht, die kleiner sind als der Benchmark + Array Rarray, der aus Teilen besteht, die größer als der Benchmark sind.
Dann müssen wir nur "gleich" Prozess Larray und Rarray ~ "
Dies erfordert die Verwendung von Rekursionsschreiben. Nach der Verarbeitung ist Larray in Larrays Benchmark unterteilt, das kleiner als Larrays Benchmark und größer als Larrays Benchmark ist. .
Dann machen wir immer wieder Dinge, der Mann steht links und die Frau steht rechts. .
Bis wir feststellen, dass die Länge von Larray 1 geworden ist, was nicht ausreicht, um wieder aufgeteilt zu werden, glauben wir, dass die Sortierung vorbei ist.
Funktion QuickSort (arr) {var l = arr.length; // zwischengespeicherte Arraylänge if (arr.length <= 1) {return arr}; // Wenn die Larray- und Rarray -Länge, die wir erhalten, kleiner als 1 sind, müssen nicht ~ var num = math.floor (arr.length/2) ausgerichtet sein; // Die Nummer in der Mitte des Arrays auswählen. Beachten Sie, dass Länge/2 nicht unbedingt eine Ganzzahl ist. Verwenden Sie Math.Floor to Round var numvalue = arr.splice (num, 1) [0]; // Verwenden Sie die Spleißmethode, um ein Element zu übernehmen. Achten Sie auf die Syntax var links = []; // Erstellen Sie das linke Referenzcontainer var rechts = []; // Erstellen Sie den richtigen Referenzbehälter für (var i = 0; links.push (arr [i]): rechts.push (arr [i]); // Der Mann steht links und die Frau steht rechts. . } Return QuickSort (links) .Concat ([numvalue], quicksort (rechts)) // rekursiv fahren Sie weiter auf den linken und rechten Arrays. }Animationseffekt:
Beachten Sie hier, dass, obwohl arr.SPLICE (num, 1) nur eine Zahl zeichnet, das Ergebnis von Spleiß auch ein Array ist, das [0] erfordert. Andernfalls ist das Ergebnis seltsamerweise eine Reihe von Arrays von Arrays (1). . .
Splice Referenz: //www.vevb.com/w3school/js/jsref_splice.htm
Math.floor ist eine Referenz für Mathematikobjekte //www.vevb.com/w3school/js/js_obj_math.htm
Was ist Rekursion: http://baike.baidu.com/view/96473.htm
Zusätzlich zur schnellen Sortierung sind die oben genannten vier Algorithmen alle einfachen Sortieralgorithmen, und diese vier Algorithmen werden während der Interviews sehr häufig aufgenommen ~
Es ist immer noch wichtig, hier zu betonen, dass der obige Algorithmus viele relevante Kenntnisse über Schleifen und Arrays verwendet, sodass Sie ihn so auswendig lernen müssen!