Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie PHP, um vier gängige Sortieralgorithmen und ihre Implementierungsprinzipien zu implementieren

Verwenden Sie PHP, um vier gängige Sortieralgorithmen und ihre Implementierungsprinzipien zu implementieren

巴扎黑
巴扎黑Original
2016-11-24 09:18:321075Durchsuche


******Einfügungssortierung (eindimensionales Array)

1, ab dem ersten Element kann davon ausgegangen werden, dass das Element sortiert wurde

2, nehmen Sie das nächste Element heraus und scannen Sie von hinten nach vorne in der sortierten Elementsequenz

3, wenn das Element (sortiert) größer als das neue Element ist, verschieben Sie das Element in das nächste Position

4, wiederholen Sie Schritt 3, bis Sie die Position gefunden haben, an der das sortierte Element kleiner oder gleich dem neuen Element ist

5, fügen Sie das neue Element an dieser Position ein

6, wiederholen Sie Schritt 2

*/

function insert_sort($arr)

{

$len = count($arr);

für ($i=1; $i<$len; $i++)

{

$tmp = $arr[$i];

$j = $i -1;

while ($arr[$j] > $tmp && $j>=0)

$arr[$j];

                               $j--;                              >/*

******Blasensortierung (eindimensional Array)

1, vergleiche benachbarte Elemente. Wenn das erste größer als das zweite ist, tauschen Sie beide aus.

2. Machen Sie die gleiche Arbeit für jedes Paar benachbarter Elemente, vom ersten Paar am Anfang bis zum letzten Paar am Ende. Zu diesem Zeitpunkt sollte das letzte Element die größte Zahl sein.

3. Wiederholen Sie die obigen Schritte für alle Elemente außer dem letzten.

4. Wiederholen Sie die obigen Schritte jedes Mal für immer weniger Elemente, bis keine Zahlenpaare mehr zum Vergleichen vorhanden sind.

*/

function bubble_sort($arr)

{

$len = count($arr);

für ( $i=0; $i<$len; $i++)

{

für ($j=$len-1; $j>$i; $j--)

{

if ($arr[$j-1] > $arr[$j])

{

$tmp = $arr[$ j-1];

                        $arr[$j-1] = $arr[$j];                                     }

return $arr ;

}

/*

***** *Auswahlsortierung (eindimensionales Array)

1, suchen Sie zuerst das kleinste Element in Speichern Sie die unsortierte Sequenz an der Startposition der sortierten Sequenz,

2, und wählen Sie dann die verbleibenden unsortierten Elemente aus Weiter aus, um das kleinste Element zu finden und es am Ende der sortierten Sequenz einzufügen.

3 usw., bis alle Elemente sortiert sind.

*/

function select_sort($arr){

$count = count($arr);

for($i=0; $ i<$count-1; $i++)

{

$k = $i;

for($j=$i+1; $j<$count ; $ j ++)

{

IF ($ arr [$ k] & gt; $ arr [$ j]

{

$ k = $j;

}

}

if ($k != $i)

$t mp = $arr [$i] ;

                  $arr[$i] = $arr[$k];                                        >
}

return $arr;

}

/ *

******Schnelle Sortierung (eindimensionales Array)

1, wählen Sie zuerst zufällig einen Mittelwert aus

2, geben Sie den kleineren Wert als den Mittelwert ein Geben Sie den Wert auf der linken Seite ein und geben Sie den größeren Wert als den mittleren Wert auf die rechte Seite ein.

3. Rufen Sie dann die Schritte 1 und 2 rekursiv für die linken bzw. rechten Daten auf, um den linken mittleren Wert zusammenzuführen. und richtige Daten.

*/

Funktion quick_sort($arr)

{

    if (count($arr) <= 1)

    {

        return $arr;

    }

    $key = $arr[0];

    $left_arr = array();

    $right_arr = array();

    for ($i=1; $i
    {

        if ($arr[$i] <= $key) $left_arr[] = $arr[$i] ;

        else  $right_arr[] = $arr[$i];

    }

    $left_arr = quick_sort($left_arr);

    $right_arr = quick_sort($right_arr);

    return array_merge($left_arr, $key, $right_arr);

}

$a = array(123,321,432,341345,45234, 53,493);

echo "

";<br><br>print_r(select_sort($a));<br><br>print_r(bubble_sort($a));<br> <br>print_r(insert_sort($a));<br><br>print_r(quick_sort($a));<br><br>echo "
";

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