Чтобы вычислить медиану массива в JavaScript, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: сортировка
- Отсортируйте массив по возрастанию.
- Если длина массива нечетная, медианой является средний элемент. Если длина массива четная, медиана представляет собой среднее значение двух средних элементов.
function calculateMedian(arr) {
arr.sort((a, b) => a - b);
const mid = Math.floor(arr.length / 2);
if (arr.length % 2 === 0) {
return (arr[mid - 1] + arr[mid]) / 2;
} else {
return arr[mid];
}
}
Метод 2: алгоритм быстрого выбора
- Реализовать алгоритм быстрого выбора для поиска k-го наименьшего элемента в несортированном массиве.
- Используйте этот алгоритм, чтобы найти медиану, найдя элемент по индексу Math.floor(arr.length / 2).
function quickselect(arr, k) {
// Implementation of Quickselect algorithm
}
function calculateMedian(arr) {
const mid = Math.floor(arr.length / 2);
const median = quickselect(arr, mid);
if (arr.length % 2 === 0) {
const median2 = quickselect(arr, mid - 1);
return (median + median2) / 2;
} else {
return median;
}
}
Метод 3. Использование математической библиотеки и оператора распространения
- Используйте оператор распространения (…), чтобы создать копию массива.
- Используйте библиотеку Math для сортировки скопированного массива.
- Рассчитайте медиану, используя ту же логику, что и в методе 1.
function calculateMedian(arr) {
const sortedArr = [...arr].sort((a, b) => a - b);
const mid = Math.floor(sortedArr.length / 2);
if (sortedArr.length % 2 === 0) {
return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
} else {
return sortedArr[mid];
}
}