Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert mehrere Sortier- und Suchalgorithmen

PHP implementiert mehrere Sortier- und Suchalgorithmen

little bottle
Freigeben: 2023-04-05 22:52:01
nach vorne
1814 Leute haben es durchsucht

Blasensortierung, schnelle Sortierung und binäre Suche sind einfach, aber man vergisst sie leicht, wenn man sie eine Weile nicht verwendet. Hier ist der PHP-Implementierungscode, den der Herausgeber gefunden und mit allen geteilt hat, damit er sie gemeinsam lernen kann.

Sortieren

Blasensortierung

Der größte Wert erscheint jedes Mal

function bubbleSort($arr)
{
    $count = count($arr);
    if ($count == 0) return false;

    for ($i = 0; $i < $count - 1; $i++) {
        for ($k = 0; $k < $count - 1 - $i; $k++) {
            if ($arr[$k] < $arr[$k + 1]) {
                $tmp         = $arr[$k];
                $arr[$k]     = $arr[$k + 1];
                $arr[$k + 1] = $tmp;
            }
        }
    }

    return $arr;
}
Nach dem Login kopieren

Schnelle Sortierung

Wählen Sie einen Wert als Benchmark. Kleinere werden links platziert, größere rechts, dann rekursiv nach links und rechts und schließlich zusammengeführt

function quickSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    $base = $arr[0];
    $left = $right = [];
    for ($i = 1; $i < $count; $i++) {
        if ($arr[$i] < $base) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }

    $left  = quickSort($left);
    $right = quickSort($right);

    return array_merge($left, [$base], $right);
}
Nach dem Login kopieren

Auswahlsortierung

Wählen Sie einen Wert aus, von dem angenommen wird, dass er der kleinste ist , und dann der Reihe nach vergleichen. Wenn Sie feststellen, dass es kleiner als er ist, tauschen Sie die Positionen aus

function selectSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    for ($i = 0; $i < $count; $i++) {
        //假设最小值位置
        $p = $i;
        //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换
        for ($j = $i + 1; $j < $count; $j++) {
            if ($arr[$p] > $arr[$j]) {
                $p = $j;
            }
        }

        if ($p != $i) {
            $tmp     = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    return $arr;
}
Nach dem Login kopieren

Suche

Binäre Suche

Die binäre Suche muss ein sortiertes Array sein, und Jedes Mal wird der Wert in der mittleren Position des Arrays genommen und der Zielvergleich

function binarySearch(array $arr, $target)
{
    $low = 0;
    $high = count($arr) - 1;
    while ($low <= $high) {
        $middle = floor(($high + $low) / 2);
        if ( $arr[$middle] == $target ) {
            return $middle;
        } elseif ( $arr[$middle] < $target ) {
            $low = $middle + 1;
        } else {
            $high = $middle - 1;
        }
    }

    return false;
}
Nach dem Login kopieren

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonPHP implementiert mehrere Sortier- und Suchalgorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:cnblogs.com
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage