Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie den Mittelwert eines Arrays in PHP

So erhalten Sie den Mittelwert eines Arrays in PHP

PHPz
PHPzOriginal
2023-04-23 10:09:071003Durchsuche

Bei Array-Operationen ist es manchmal erforderlich, den Zwischenwert im Array zu ermitteln, beispielsweise den Median des Arrays. PHP ist eine sehr flexible Sprache und kann verschiedene Methoden verwenden, um den Zwischenwert eines Arrays zu ermitteln. In diesem Artikel stellen wir verschiedene Möglichkeiten vor, um den Zwischenwert eines Arrays zu ermitteln.

Methode 1: Nehmen Sie den Median nach dem Sortieren

Diese Methode ist relativ einfach. Sie müssen nur das Array sortieren und dann den Mittelwert nehmen. Diese Methode weist jedoch einen offensichtlichen Nachteil auf, nämlich dass die zeitliche Komplexität der Sortierung O(nlogn) beträgt. Wenn n groß ist, ist die Geschwindigkeit relativ langsam.

PHP bietet eine sort()-Funktion, die das Array sortieren kann, und wir können diese Funktion verwenden, um dies zu erreichen.

Codebeispiel:

function get_median($arr) {
    sort($arr);
    $count = count($arr);
    $middle = floor(($count - 1) / 2);
    if ($count % 2 == 0) {
        $median = ($arr[$middle] + $arr[$middle + 1]) / 2;
    } else {
        $median = $arr[$middle];
    }
    return $median;
}

Methode 2: Verwenden Sie Array-Funktionen, um den Median zu ermitteln.

PHP stellt einige Array-Funktionen zur Verfügung, mit denen wir den Median berechnen können Mittelwert eines Arrays. Die spezifische Methode besteht darin, zuerst die Funktion count() zu verwenden, um die Länge des Arrays zu ermitteln, dann die Funktion array_slice() zu verwenden, um das mittlere Segment aus dem Array zu entfernen, und schließlich die Funktion array_sum() zu verwenden, um es zusammenzufassen Dann dividiere es durch die Länge. Diese Methode ist einfacher und schneller.

Codebeispiel:

function get_median($arr) {
    sort($arr);
    $count = count($arr);
    $middle = floor(($count - 1) / 2);
    $median = ($count % 2 == 0) ?
        (array_sum(array_slice($arr, $middle, 2)) / 2) :
        $arr[$middle];
    return $median;
}

Methode 3: Schnellauswahlalgorithmus

Beide oben genannten Methoden erfordern das Sortieren des Arrays, daher ist die zeitliche Komplexität relativ hoch hoch. Es gibt tatsächlich eine Methode namens QuickSelect, mit der der Median ohne Sortierung ermittelt werden kann. Der Schnellauswahlalgorithmus weist viele Ähnlichkeiten mit dem Schnellsortierungsalgorithmus auf, erfordert jedoch nur einen Teil der Schnellsortierung, sodass seine Zeitkomplexität O (n) beträgt.

Codebeispiel:

function get_median($arr) {
    if (count($arr) % 2 == 0) {
        $k = count($arr) / 2;
    } else {
        $k = (count($arr) + 1) / 2;
    }
    return quick_select($arr, $k);
}

function quick_select(&$arr, $k) {
    if (count($arr) == 1) return $arr[0];
    $p = $arr[0];
    $f = $l = array();
    foreach ($arr as $v) {
        if ($v < $p) $f[] = $v;
        elseif ($v > $p) $l[] = $v;
    }
    if ($k <= count($f)) {
        return quick_select($f, $k);
    } elseif ($k > count($arr) - count($l)) {
        return quick_select($l, $k - (count($arr) - count($l)));
    } else {
        return $p;
    }
}

Die oben genannten Methoden sind für verschiedene Szenarien geeignet. Wenn Sie mehrere Zwischenwerte benötigen, können Sie eine Variation der oben genannten Methode verwenden. Unabhängig davon, welche Methode Sie verwenden, müssen Sie zunächst die grundlegenden Operationen von Arrays verstehen, um besser mit Arrays umgehen zu können.

Das obige ist der detaillierte Inhalt vonSo erhalten Sie den Mittelwert eines Arrays 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