Heim > php教程 > PHP源码 > Hauptteil

Detaillierte Erläuterung des PHP-Bubble-Sort-Algorithmus (Bubble Sort).

大家讲道理
Freigeben: 2016-11-11 09:26:05
Original
1458 Leute haben es durchsucht

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 &#39;&#39;;
var_dump($demo_array);echo &#39;&#39;;
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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 &#39;&#39;;
var_dump($demo_array);echo &#39;&#39;;
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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
Nach dem Login kopieren


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.

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage