>백엔드 개발 >PHP 문제 >PHP에서 배열의 중간 값을 얻는 방법

PHP에서 배열의 중간 값을 얻는 방법

PHPz
PHPz원래의
2023-04-23 10:09:071134검색

배열 연산 중에 배열의 중앙값과 같은 배열의 중간값을 구해야 하는 경우가 있습니다. PHP는 매우 유연한 언어이며 다양한 방법을 사용하여 배열의 중간 값을 얻을 수 있습니다. 이 기사에서는 배열의 중간 값을 얻는 여러 가지 방법을 소개합니다.

방법 1: 정렬 후 중앙값 가져오기

이 방법은 비교적 간단합니다. 배열을 정렬한 다음 중간 값만 가져오면 됩니다. 그러나 이 방법은 정렬의 시간 복잡도가 O(nlogn)이라는 명백한 단점이 있습니다. n이 클 경우 속도가 상대적으로 느려집니다.

PHP는 배열을 정렬할 수 있는 sort() 함수를 제공하며, 이 함수를 사용하여 이를 달성할 수 있습니다.

코드 예:

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

방법 2: 배열 함수를 사용하여 중앙값 찾기

PHP는 배열의 중간 값을 계산하는 데 사용할 수 있는 몇 가지 배열 함수를 제공합니다. 구체적인 방법은 먼저 count() 함수를 사용하여 배열의 길이를 얻은 다음 array_slice() 함수를 사용하여 배열에서 중간 세그먼트를 꺼내고 마지막으로 array_sum() 함수를 사용하여 합산하는 것입니다. 그런 다음 길이로 나눕니다. 이 방법은 더 간단하고 빠릅니다.

코드 예:

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

방법 3: 빠른 선택 알고리즘

위의 두 방법 모두 배열 정렬이 필요하므로 시간 복잡도가 상대적으로 높습니다. 실제로 정렬하지 않고 중앙값을 찾을 수 있는 QuickSelect라는 메서드가 있습니다. 빠른 선택 알고리즘은 빠른 정렬 알고리즘과 많은 유사점이 있지만 빠른 정렬의 일부만 필요하므로 시간 복잡도는 O(n)입니다.

코드 예:

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

위는 배열의 중간 값을 얻는 세 가지 방법입니다. 다양한 방법은 다양한 시나리오에 적합합니다. 여러 중간 값을 가져와야 하는 경우 위 방법을 변형하여 사용할 수 있습니다. 어떤 방법을 사용하든 배열을 더 잘 처리하려면 먼저 배열의 기본 작동을 이해해야 합니다.

위 내용은 PHP에서 배열의 중간 값을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.