Heim >Backend-Entwicklung >PHP-Problem >PHP-Array – Wie verwende ich die Zusammenführungssortierung?
Wir wissen so viel über Arrays in PHP. Ich glaube, dass viele Leute diesen Teil des Wissens nicht kennen führen Sie zu einem tieferen Verständnis dieser Inhalte.
Verwandte Empfehlungen: Was ist der Suchalgorithmus im PHP-Array? Wie finde ich es?
Merge-Sortierung:
Merge-Sortierung (ERGE-SOQfT) ist ein effektiver Sortieralgorithmus, der auf der Zusammenführungsoperation basiert. Dieser Algorithmus ist eine sehr typische Anwendung der Divide-and-Conquer-Methode. Führen Sie die bereits geordneten Teilsequenzen zusammen, um eine vollständig geordnete Sequenz zu erhalten. Ordnen Sie also zuerst jede Teilsequenz und dann die Teilsequenzsegmente. Wenn zwei geordnete Listen zu einer geordneten Liste zusammengeführt werden, spricht man von einer bidirektionalen Zusammenführung. Nehmen wir den Code als Beispiel:
<?php //PHP数组排序算法:合并算法. //二路归并 $arr1 = array(1,3,5); $arr2 = array(2,4,6); //取出一个空数组用于归并空间 $arr3 = array(); while(count($arr1) & count($arr2)){ //只要$arr1和$arr2里面还有元素,就进行循环 //取出每个数组的第-一个元素:进行比较 $arr3[] = $arr1[0] < $arr2[0] ? array_shift($arr1) : array_shift($arr2); } //合并结果 print_r(array_merge($arr3 ,$arr1,$arr2));
Die Ergebnisse sind wie folgt:
Der Algorithmus der Zusammenführungssortierung ist:
1) Teilen Sie das Array in zwei Arrays auf. .
2) Wiederholen Sie Schritt 1, um das Array in kleinste Einheiten aufzuteilen. .
3) Beantragen Sie Speicherplatz, sodass seine Größe der Summe der beiden sortierten Sequenzen entspricht. Dieser Speicherplatz wird zum Speichern der zusammengeführten Sequenz verwendet.
4) Setzen Sie zwei Zeiger, die Anfangspositionen sind die Startpositionen der beiden sortierten Sequenzen. .
5) Vergleichen Sie die Elemente, auf die die beiden Zeiger zeigen, wählen Sie das relativ kleine Element aus, legen Sie es in den Zusammenführungsbereich und bewegen Sie den Zeiger an die nächste Position.
6) Wiederholen Sie Schritt 3, bis ein Zeiger das Ende der Sequenz überschreitet. .
7) Kopieren Sie alle verbleibenden Elemente der anderen Sequenz direkt an das Ende der zusammengeführten Sequenz.
Der Code lautet wie folgt:
$arr = array(4,7,2,1,5,9,3); //归并排序函数 function merge_sort($arr){ //递归出口 $len = count($arr); if($len <= 1) return $arr; //拆分. $middle = floor($len / 2); $left = array_slice($arr,0, $middle); $right = array_slice($arr, $midd1e); //假设左边和右边都已经排好序:二路归并 $m = array(); while(count($left) && count($right)){ //只要$arr1和$arr2里面还有元素,就进行循环 //取出每个数组的第一个元素: 进行比较 $arr3[] = $left[0] < $right[0] ? array_shift($left) : array_shift($right); } //返回结果 return array_merge($m, $left ,$right); } print_r(merge_sort($arr));
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonPHP-Array – Wie verwende ich die Zusammenführungssortierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!