Sorting Problem

Online Median (Part I)

Problem

Given an array of integers, find the median number in it.

Example


{
"stream": [3, 8, 5, 2]
}


Output:

4

Solution


function median(arr) {
    // 1: sort array in ascending order
    const sortedArr = arr.sort();
    const middleIndex = arr.length / 2;
    // 2.1: if odd, return middle element
    if (arr.length % 2 !== 0) {
        return arr[Math.floor(middleIndex)];
    }
    // 2.2: if even, return average of two middle elements
    return (arr[middleIndex - 1] + arr[middleIndex]) / 2;
}

console.log(median([1, 2])); // 1.5
console.log(median([4, 1, 7])); // 4
console.log(median([3, 7, 5, 1, 8, 9])); // 6
console.log(median([39, 3, 14, 29, 23, 13, 23, 23, 40, 23, 21, 5, 7, 12, 56])); // 23

Leave a comment