Write a function to calculate the median of an array of numbers.

Медиана — центральный элемент отсортированного массива, а при чётной длине — среднее двух центральных элементов.

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

Что ответить на собеседовании

Медиана — центральный элемент отсортированного массива, а при чётной длине — среднее двух центральных элементов.

Подробный разбор

Ответ с пояснениями

Медиана — центральный элемент отсортированного массива, а при чётной длине — среднее двух центральных элементов.

Вариант для массива конечных чисел, без изменения исходного массива:

function median(values) {
  if (!values.length || !values.every(Number.isFinite)) {
    throw new TypeError('Expected a non-empty array of finite numbers');
  }
  const a = [...values].sort((x, y) => x - y);
  const i = Math.floor(a.length / 2);
  return a.length % 2 ? a[i] : a[i - 1] / 2 + a[i] / 2;
}

Сложность сортировки — O(n log n), дополнительная память — O(n). Для прикладных чисел учитывайте ограничения точности Number.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее