티스토리 뷰

반응형
function getMedian(arr) {
    // arr.sort((a, b) => { return a - b; });
    console.log('arr=', arr);
    const max = arr.reduce((acc, cur, idx) => {
        if(arr[idx] > acc){
            acc = arr[idx];
        }
        return acc;
    }, 0);
    
    let counts = [];
    for(let i=0; i<=max; i++){
        counts[i] = 0;
    }
    for(let i=0; i<arr.length; i++){
        counts[arr[i]]++;
    }
    for(let i=1; i<counts.length; i++){
        counts[i] += counts[i-1];
    }
    
    let sorted = [];
    let index = 0;
    while(index <= max){
        if(sorted.length < counts[index]){
            sorted.push(index);
        }
        else{
            index++;
        }
    }
    
    if(sorted.length%2 == 1){
        return sorted[parseInt(sorted.length/2)];
    }
    else{
        return (sorted[(sorted.length/2)-1] + sorted[sorted.length/2])/2
    }
    
}
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함