Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Merge-Sortierung des PHP-Sortieralgorithmus

Detaillierte Erläuterung der Merge-Sortierung des PHP-Sortieralgorithmus

小云云
小云云Original
2018-01-08 09:54:161640Durchsuche

Es gibt viele Arten von PHP-Sortieralgorithmen. In diesem Artikel werden hauptsächlich die relevanten Informationen zur Merge-Sortierung der PHP-Sortieralgorithmen vorgestellt. Ich hoffe, dass sie jedem helfen können.

Zusammenführungssortierung

Zusammenführungssortierung (MERGE-SORT) ist ein effektiver Sortieralgorithmus, der auf Zusammenführungsoperationen basiert. Der Algorithmus verwendet die Divide-and-Conquer-Methode (Pide and Conquer). eine sehr typische Anwendung. 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.

Zusammenführungsprozess

Der Kern der Zusammenführungssortierung besteht darin, zwei geordnete Arrays zusammenzuführen und die beiden geordneten Arrays zu vergleichen , je nachdem, welcher Wert kleiner ist, und fügen Sie das Element in das dritte Array ein. Nach der Aufnahme wird das Element im entsprechenden Array gelöscht usw. Wenn ein Array abgerufen wird und keine Elemente vorhanden sind, können Sie die restlichen Elemente hinzufügen das andere Array direkt zum dritten Array.

Prinzip

1. Füge alle zwei benachbarten Zahlen in der Sequenz zusammen, um ceil(n/2)-Sequenzen zu bilden. Nach dem Sortieren enthält jede Sequenz zwei Elemente, das letzte Die Sequenz darf nur ein Element haben.

2. Führen Sie die obigen Sequenzen erneut zusammen, um ceil(n/4)-Sequenzen zu bilden. Jede Sequenz enthält vier Elemente und die letzte Sequenz enthält möglicherweise nur drei oder weniger Elemente.

3. Wiederholen Sie Schritt 2, bis alle Elemente sortiert sind.

Beispiel

Sortieren Sie das Array [53,89,12,6,98,25,37,92,5]

Nach der ersten Zusammenführung

(53,89),12, (6,98),(25,37),(5,92)

Nach der zweiten Zusammenführung

(12,53,89),(6,25,37,98),(5,92)

Nach der dritten Fusion

(6,12,25 ,37,53 ,89,98),(5,92)

Nach der vierten Fusion

5,6,12,25,37,53,89,92,98

PHP-Code-Implementierung


<?php
function merge_sort($arr){
  $length=count($arr);
  if($length<=1){
    return $arr;
  }
  //分解数组,递归排序
  $half=ceil($length/2);
  $arr2=array_chunk($arr,$half);
  $left=merge_sort($arr2[0]);
  $right=merge_sort($arr2[1]);
  while(count($left)&&count($right)){
    if($left[0]<$right[0]){
      $reg[]=array_shift($left);
    }else{
      $reg[]=array_shift($right);
    }
  }
  return array_merge($reg,$left,$right);
}

Haben Sie es schon gelernt? Jeder, bitte probiert es schnell.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Bucket-Sortierung im PHP-Sortieralgorithmus series_php skills

Lernen Sie mehr über gängige PHP-Sortieralgorithmen

Beispielanalyse grundlegender, häufig verwendeter Sortieralgorithmen in JavaScript

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Merge-Sortierung des PHP-Sortieralgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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