Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти медиану массива

Короткий ответ

Отсортируйте массив и возьмите средний элемент; при чётном количестве — среднее двух средних:

<?php
 
function median(array $numbers): float
{
    sort($numbers);
    $count = count($numbers);
    $middle = intdiv($count, 2);
 
    return $count % 2 === 1
        ? $numbers[$middle]
        : ($numbers[$middle - 1] + $numbers[$middle]) / 2;
}
 
echo median([7, 1, 3]), ' ', median([7, 1, 3, 5]);

Результат:

3 4

Чем медиана лучше среднего

Одно очень большое значение сильно сдвигает среднее, а медиану почти не меняет:

<?php
 
$salaries = [40, 45, 50, 55, 1000];
sort($salaries);
 
echo array_sum($salaries) / count($salaries), ' ', $salaries[intdiv(count($salaries), 2)];

Результат:

238 50

Функции из этого ответа

  • sort — Сортирует массив по возрастанию.
  • count — Возвращает количество элементов массива.
  • intdiv — Выполняет целочисленное деление.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.