Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Radix-Sortieralgorithmus in PHP

Detaillierte Erklärung des Radix-Sortieralgorithmus in PHP

WBOY
WBOYOriginal
2023-07-08 21:58:38841Durchsuche

Detaillierte Erklärung des Radix-Sortieralgorithmus in PHP

Radix-Sortierung ist ein relativ stabiler und effizienter Sortieralgorithmus, der zum Sortieren von Zahlen geeignet ist. Bei großen Datenmengen ist die Radix-Sortierung effizienter als andere Sortieralgorithmen. In diesem Artikel wird der Radix-Sortieralgorithmus in PHP ausführlich vorgestellt und der Implementierungsprozess des Algorithmus anhand von Codebeispielen gezeigt.

Die Kernidee der Basissortierung besteht darin, Zahlen nach der Anzahl der Ziffern zu sortieren. Sortieren Sie zunächst alle Zahlen nach einzelnen Ziffern, dann nach Zehnerstellen usw., bis die höchste Ziffer erreicht ist. In jeder Sortierrunde werden die Zahlen in die entsprechenden Buckets verteilt, bis die letzte Sortierrunde abgeschlossen ist.

Das Folgende ist ein Beispiel für einen auf PHP basierenden Radix-Sortieralgorithmus:

function radixSort($array) {
    // 获取最大值
    $max = max($array);
    
    // 获取最大值的位数
    $numDigits = strlen((string) $max);
    
    // 创建桶数组
    $buckets = array_fill(0, 10, []);
    
    for ($i = 0; $i < $numDigits; $i++) {
        // 将数字分配到桶中
        foreach ($array as $num) {
            $digit = floor($num / pow(10, $i)) % 10;
            $buckets[$digit][] = $num;
        }
        
        // 将数字从桶中取出,并按顺序放回原数组
        $array = [];
        for ($j = 0; $j < 10; $j++) {
            foreach ($buckets[$j] as $num) {
                $array[] = $num;
            }
            $buckets[$j] = [];
        }
    }
    
    return $array;
}

// 测试排序算法
$array = [23, 6, 78, 12, 456, 2, 56, 11];
$result = radixSort($array);

echo "排序前:";
print_r($array);

echo "排序后:";
print_r($result);

Ermitteln Sie im obigen Code zunächst den Maximalwert im angegebenen Array und berechnen Sie die Anzahl der Ziffern im Maximalwert. Erstellen Sie dann ein Array mit 10 Buckets, um in Ziffern zugeordnete Zahlen zu speichern. Führen Sie als Nächstes jede Sortierrunde durch eine Schleife durch. In jeder Sortierrunde werden die Zahlen im Array durchlaufen und entsprechend der aktuellen Ziffernzahl den entsprechenden Buckets zugewiesen. Nachdem die Sortierung abgeschlossen ist, werden die Zahlen aus dem Eimer genommen und der Reihe nach wieder in das ursprüngliche Array eingefügt. Abschließend wird das sortierte Array zurückgegeben.

Verwenden Sie das obige Codebeispiel zum Testen. Die Ausgabeergebnisse lauten wie folgt:

Vor dem Sortieren: Array
(

[0] => 23
[1] => 6
[2] => 78
[3] => 12
[4] => 456
[5] => 2
[6] => 56
[7] => 11

)

Nach dem Sortieren: Array
(

[0] => 2
[1] => 6
[2] => 11
[3] => 12
[4] => 23
[5] => 56
[6] => 78
[7] => 456

)

Wie Sie sehen können, ist das Der Radix-Sortieralgorithmus sortiert das Array erfolgreich nach numerischer Größe.

Die zeitliche Komplexität des Basissortieralgorithmus beträgt O(k*n), wobei k die maximale Anzahl von Ziffern und n die Array-Länge ist. Die Radix-Sortierung weist im Vergleich zu anderen Sortieralgorithmen eine geringere zeitliche Komplexität auf. Der Radix-Sortieralgorithmus erfordert jedoch zusätzlichen Speicherplatz zum Speichern des Bucket-Arrays, sodass bei großen Datenmengen die Speichernutzung berücksichtigt werden muss.

Zusammenfassend lässt sich sagen, dass die Radix-Sortierung ein effizienter Sortieralgorithmus ist, der sich zum Sortieren von Zahlen eignet. Wenn Sie die Prinzipien und den Implementierungsprozess der Basissortierung verstehen, können Sie den Algorithmus besser erlernen und anwenden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Radix-Sortieralgorithmus in PHP. 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