Heim > Backend-Entwicklung > PHP-Tutorial > Implementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung)

Implementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung)

藏色散人
Freigeben: 2023-04-05 14:18:02
Original
3771 Leute haben es durchsucht

Hill (Shell)-Sortierung oder Shell-Methode ist eine direkte Vergleichssortierung. Es kann als eine Verallgemeinerung von Bubble Sort oder Insertion Sort angesehen werden. Diese Methode sortiert zunächst weit voneinander entfernte Elementpaare und schließt dann nach und nach die Lücke zwischen den zu vergleichenden Elementen. Wenn Sie mit Elementen beginnen, die weit voneinander entfernt sind, können Sie einige fehl am Platz liegende Elemente schneller verschieben als durch den Austausch von Nachbarn.

Implementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung)

Beispiel für die Shell-Sortierung lautet wie folgt:

Implementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung)

Der erste Durchlauf ist „5-Sortierung“. " , Führe eine Einfügungssortierung für verschiedene Subarrays durch (a1, a6, a11), (a2, a7, a12), (a3, a8), (a4, a9), (a5, a10). Beispielsweise wird das Subarray (a1, a6, a11) von (62,17,25) in (17,25,62) geändert.

Dann „3 sortieren“, Einfügesortierung für die Subarrays (a1, a4, a7, a10), (a2, a5, a8, a11), (a3, a6, a9, a12) durchführen.

Das letzte Mal ist „1 Sortierung“, also das gesamte Array (a1,...,a12). Wie im Beispiel gezeigt, sind die Subarrays von Shell-Sortieroperationen zunächst sehr kurz, später werden sie länger, sind aber grundsätzlich geordnet. In beiden Fällen funktioniert die Einfügungssortierung. Shell-Sortierung ist instabil: Sie kann die relative Reihenfolge von Elementen mit gleichen Werten ändern. Es handelt sich um einen adaptiven Sortieralgorithmus, der schneller arbeitet, wenn die Eingabe teilweise sortiert ist.

Die Hill (Shell)-Sortierungsgrafik sieht wie folgt aus:

Implementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung)

Codebeispiel für PHP, das den Shell (Shell)-Sortieralgorithmus implementiert:

<?php
function shell_Sort($my_array)
{
    $x = round(count($my_array)/2);
    while($x > 0)
    {
        for($i = $x; $i < count($my_array);$i++){
            $temp = $my_array[$i];
            $j = $i;
            while($j >= $x && $my_array[$j-$x] > $temp)
            {
                $my_array[$j] = $my_array[$j - $x];
                $j -= $x;
            }
            $my_array[$j] = $temp;
        }
        $x = round($x/2.2);
    }
    return $my_array;
}

$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "原始数组 :\n";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组\n:";
echo implode(&#39;, &#39;,shell_Sort($test_array)). PHP_EOL;
Nach dem Login kopieren

Ausgabe:

原始数组 : 3, 0, 2, 5, -1, 4, 1 
排序后数组 :-1, 0, 1, 2, 3, 4, 5
Nach dem Login kopieren

Dieser Artikel ist eine Einführung in den Sortieralgorithmus von PHP Hill (Shell). Ich hoffe, dass er für Freunde in Not hilfreich ist !

Das obige ist der detaillierte Inhalt vonImplementierung des Sortieralgorithmus PHP Hill (Shell) (detaillierte Codeerklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage