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

PHP implementiert mehrere Sortier- und Suchalgorithmen

little bottle
little bottlenach vorne
2019-04-18 16:20:381790Durchsuche

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;
}

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);
}

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;
}

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;
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen