병합정렬 구현해보기

Lainlnya·2022년 10월 25일
0

알고리즘

목록 보기
22/25

하나의 배열을 두 개의 균등한 크기로 분할하고, 부분 정렬하며, 이를 다시 합하면서 전체를 정렬해가는 알고리즘

평균 시간 복잡도

O(nlogN)

병합정렬

let mergeSort = (arr) => {
    if (arr.length <= 1) return arr;

    const mid = (arr.length / 2).toFixed(0);
    const left = mergeSort(arr.slice(0, mid));
    const right = mergeSort(arr.slice(mid));

    let sorted = [];
    let i = 0, j = 0;

    while (i < left.length && j < right.length) {
        if (left[i] < right[j]) {
            sorted.push(left[i]);
            i++;
        } else {
            sorted.push(right[j]);
            j++;
        }
    }

    if (i < left.length) sorted.push(...left.slice(i));
    if (j < right.length) sorted.push(...right.slice(j));

    return sorted;
}
profile
Growing up

0개의 댓글