Javascript

(Javascript) mergeSort

JJeongHyun 2023. 1. 16. 20:55
반응형

mergeSort

  •  전체 데이터를 하나의 단위로 분할한 후 다시 합치면서 정렬하는 방식
function merge(leftArr, rightArr) {
        const result = [];
        let leftIdx = 0,
          rightIdx = 0;
        while (leftIdx < leftArr.length && rightIdx < rightArr.length) {
          if (leftArr[leftIdx] < rightArr[rightIdx]) {
            result.push(leftArr[leftIdx++]);
          } else {
            result.push(rightArr[rightIdx++]);
          }
        }
        return [
          ...result,
          ...leftArr.slice(leftIdx),
          ...rightArr.slice(rightIdx),
        ];
}
function mergeSort(arr) {
        console.log(`separate count : ${count}, ${arr}`);
        if (arr.length === 1) return arr;

        const midPoint = parseInt(arr.length / 2);
        count++;
        return merge(
          mergeSort(arr.slice(0, midPoint)),
          mergeSort(arr.slice(midPoint))
        );
      }

mergeSort 전체 배열 분할 과정