Vorwort
Blasensortierung bedeutet grob, zwei benachbarte Zahlen der Reihe nach zu vergleichen und dann nach der Größe bis zu den letzten beiden Ziffern zu sortieren. Da beim Sortiervorgang kleine Zahlen immer nach vorne und große Zahlen nach hinten gestellt werden, was dem Aufsteigen von Blasen gleichkommt, spricht man von Blasensortierung. Tatsächlich können Sie es im eigentlichen Prozess jedoch auch umgekehrt verwenden, je nach Ihren eigenen Bedürfnissen. Die großen Bäume werden nach vorne und die Dezimalstellen nach hinten gestellt.
Eigentlicher Kampf
Direkter Code:
<?php/** * 冒泡排序算法示例 */// 这里以一维数组做演示$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);// 第一层for循环可以理解为从数组中键为0开始循环到最后一个for ($i=0;$i<count($demo_array);$i++) { // 第二层将从键为$i的地方循环到数组最后 for ($j=$i+1;$j $demo_array[$j]) { $tmp = $demo_array[$i]; // 这里的tmp是临时变量 $demo_array[$i] = $demo_array[$j]; // 第一次更换位置 $demo_array[$j] = $tmp; // 完成位置互换 } } }// 打印结果集echo ''; var_dump($demo_array);echo '';
Laufendes Ergebnis:
array(13) { [0]=> int(2) [1]=> int(5) [2]=> int(6) [3]=> int(11) [4]=> int(15) [5]=> int(21) [6]=> int(23) [7]=> int(25) [8]=> int(32) [9]=> int(43) [10]=> int(54) [11]=> int(65) [12]=> int(82) }
Das Ergebnis von Oben können wir sehen, dass die Reihenfolge der Schlüsselwerte im Array geändert wurde und die Sortierung erfolgreich war.
Wenn der obige Algorithmus die Schlüsselwerte im Array entsprechend der Wertgröße von klein nach groß sortieren soll, wie kann man dann umgekehrt von groß nach klein vorgehen?
Es ist ganz einfach, ändern Sie einfach ein Vergleichssymbol wie folgt:
<?php/** * 冒泡排序算法示例 */// 这里以一维数组做演示$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);// 第一层for循环可以理解为从数组中键为0开始循环到最后一个for ($i=0;$i<count($demo_array);$i++) { // 第二层将从键为$i的地方循环到数组最后 for ($j=$i+1;$j<count($demo_array);$j++) { // 比较数组中相邻两个值的大小 if ($demo_array[$i] < $demo_array[$j]) { $tmp = $demo_array[$i]; // 这里的tmp是临时变量 $demo_array[$i] = $demo_array[$j]; // 第一次更换位置 $demo_array[$j] = $tmp; // 完成位置互换 } } }// 打印结果集echo ''; var_dump($demo_array);echo '';
Laufendes Ergebnis:
array(13) { [0]=> int(82) [1]=> int(65) [2]=> int(54) [3]=> int(43) [4]=> int(32) [5]=> int(25) [6]=> int(23) [7]=> int(21) [8]=> int(15) [9]=> int(11) [10]=> int(6) [11]=> int(5) [12]=> int(2) }
Das ist alles, die Reihenfolge lässt sich ganz einfach ändern .
Erweiterung
Wenn Sie sich den obigen Code genau ansehen, werden Sie feststellen, dass es einen Ort gibt, auf den es sich zu achten lohnt, nämlich den Ort, an dem Es lohnt sich, auf Swap-Variablen zu achten. Ja, das ist auch der Kernpunkt des Sprudelns. Wenn Sie diese Technik beherrschen, können Sie sie in Zukunft auch an anderen Stellen anwenden.
Hier werden wir ein wenig darüber sprechen.
Prinzip:
Jetzt gibt es zwei Variablen A und B, und die Anforderung besteht darin, ihre Werte auszutauschen.
Wenn wir die Frage sehen, denken wir vielleicht zuerst an eine direkte Zuweisung, aber wenn wir sie direkt zuweisen, wird einer von ihnen definitiv überschrieben, unabhängig davon, wer zuerst wem zugewiesen wird Die dritte Variable C speichert den Wert vorübergehend in A oder B, damit das gewünschte Ziel erreicht werden kann.
$c = $a; // 暂存 $a = $b; // b给a $b = $c; // 暂存的a值再给b
Hinweis: Tatsächlich ist keine dritte Variable erforderlich, und die Werte der A- und B-Variablen können ausgetauscht werden. Sie können substr verwenden (), str_replace() usw. Methode, da wir hier die Blasensortierung einführen, werden wir sie nicht zu sehr erweitern.
Zusammenfassung
Es gibt so viele Dinge über die Blasensortierung. Zusammenfassend gibt es zwei Hauptpunkte:
Schleifenvergleich
Schlüsselwerte austauschen
Wenn Sie diese beiden Punkte erfüllen können, ist das grundsätzlich in Ordnung. Natürlich gibt es viele Algorithmen für die Blasensortierung, hier nur Einer davon: Interessierte Studierende können selbst recherchieren.