배열 연산 중에 배열의 중앙값과 같은 배열의 중간값을 구해야 하는 경우가 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!