Медиана — центральный элемент отсортированного массива, а при чётной длине — среднее двух центральных элементов.
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.