Heim > Artikel > Backend-Entwicklung > Teilen von Beispielen für die PHP-Blasensortierung
Prinzip: Vergleichen Sie für einen Datensatz die Größe benachbarter Daten, stellen Sie Daten mit kleinen Werten vorne und Daten mit großen Werten hinten ein. (Die folgenden sind alle in aufsteigender Reihenfolge angeordnet, d. h. von klein nach groß)
Beispiel: $arr = array(6, 3, 8, 2, 9, 1);
$ arr hat 6 Daten, die Größe des paarweisen Vergleichs ist wie folgt. Achten Sie auf die Anzahl der Vergleichsrunden und die Anzahl der Vergleiche in jeder Runde
Die erste Sortierrunde:
Der erste Vergleich 6 und 3 Vergleichsergebnisse: 3 6 8 2 9 1
Der zweite Vergleich 6 und 3 Vergleichsergebnisse: 3 6 8 2 9 1
Der dritte Vergleich 8 und 2 Vergleichsergebnisse: 3 6 2 8 9 1
Der vierte Vergleich, das Vergleichsergebnis zwischen 8 und 9: 3 6 2 8 9 1
Der fünfte Vergleich, das Vergleichsergebnis zwischen 9 und 1: 3 6 2 8 1 9
Zusammenfassung einer Vergleichsrunde: 1. In der ersten Sortier- und Vergleichsrunde wurde 5 Mal keine Reihenfolge von klein nach groß ermittelt. 2. Da jeder Vergleich basiert auf der großen Zahl, die sich rückwärts bewegt, sodass nach Abschluss des Vergleichs festgestellt werden kann, dass die große Zahl an letzter Stelle steht (9 ist aufgetaucht, sodass in der nächsten Vergleichsrunde kein Vergleich erforderlich ist)
Zweite Sortierrunde:
Erster Vergleich 3 und 6 Vergleichsergebnisse: 3 6 2 8 1 9
Das zweite Vergleichsergebnis von 6 und 2: 3 2 6 8 1 9
Das dritte Vergleichsergebnis von 6 und 8: 3 2 6 8 1 9
Das vierte Vergleichsergebnis von 8 und 1: 3 2 6 1 8 9
Zusammenfassung des Vergleichs der zweiten Runde: 1. Sortieren Sie die 2. Runde und vergleichen Sie 4 Mal. Die Sortierung von klein nach groß wurde nicht durchgeführt. 2. 8 ist aufgetaucht, es besteht keine Notwendigkeit, 8 in der nächsten Runde zu vergleichen
Die dritte Sortierrunde:
Das erste Vergleichsergebnis von 3 und 2: 2 3 6 1 8 9
Das zweite Vergleichsergebnis von 3 und 6: 2 3 6 1 8 9
Das dritte Vergleichsergebnis von 6 und 1: 2 3 1 6 8 9
Zusammenfassung der dritten Vergleichsrunde: 1. In der dritten Sortier- und Vergleichsrunde dreimal , es wurde keine Reihenfolge von klein nach groß erhalten 2. 6 sprudelte hoch, daher besteht keine Notwendigkeit, 6 in der nächsten Runde zu vergleichen
Die vierte Sortierrunde:
Das Ergebnis des ersten Vergleichs 2 und 3: 2 3 1 6 8 9
Das Ergebnis des zweiten Vergleichs 3 und 1: 2 1 3 6 8 9
Zusammenfassung der vierten Vergleichsrunde: 1 . Beim Sortieren der 4. Runde und beim Vergleichen von 2 Malen wurde keine Reihenfolge von klein nach groß erhalten. 2. 3 sprudelte nach oben, es besteht keine Notwendigkeit, 3 in der nächsten Runde zu vergleichen
Die fünfte Runde Sortierung:
Die Ergebnisse des ersten Vergleichs 2 und 1: 1 2 3 6 8 9
Zusammenfassung des Vergleichs der fünften Runde: 1. Die fünfte Sortierrunde und der Vergleich 1 haben das Ergebnis nicht erhalten Sortierung von klein nach groß. 2. Da nur noch eine 1 übrig ist, ist ein Vergleich nicht mehr erforderlich.
Aus den oben genannten fünf Sortierrunden und mehreren Vergleichen haben wir Grund, eine Schlussfolgerung zu ziehen:
Für ein Array der Länge N müssen wir N- sortieren. 1 Runden, jede i Runde muss N-i-mal verglichen werden. Wir können hierfür eine Doppelschleifenanweisung verwenden. Die äußere Schleife steuert die Schleifenrunden und die innere Schleife steuert die Anzahl der Vergleiche in jeder Runde.
<?php function order($arr){ $count = count($arr); $temp = 0; //外层控制排序轮次 for($i=0; $i<$count-1; $i++){ //内层控制每轮比较次数 for($j=0; $j< $count-1-$i; $j++){ if($arr[$j] > $arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } $arr= array(6,3,8,2,9,1); $res = order($arr); var_dump($res);
Verwandte Empfehlungen:
Verschiedene Lösungen für die PHP-Blasensortierung
PHP-Blasensortierarray von klein bis groß Sortiermethode
Beispielcode für den PHP-Array-Blasensortierungsalgorithmus
Das obige ist der detaillierte Inhalt vonTeilen von Beispielen für die PHP-Blasensortierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!