개요

정렬 알고리즘 중 **병합정렬(Merge Sort)**과 **퀵정렬(Quick Sort)**은 모두 분할 정복(Divide and Conquer) 전략을 사용해 입력을 작고 다루기 쉬운 조각으로 나눈 뒤 병합하거나 정복하는 방식으로 동작한다.


병합정렬

포인트!!!!!!!

JavaScript 구현 (직관적 버전)

function merge(left, right) {
  const result = [];
  let i = 0, j = 0;
  while (i < left.length && j < right.length) {
    if (left[i] <= right[j]) result.push(left[i++]);
    else result.push(right[j++]);
  }
  
  //두 배열의 크기가 다를 때 일부 원소가 안들어갈 수도 있어서 들어간 코드
  while (i < left.length) result.push(left[i++]);
  while (j < right.length) result.push(right[j++]);
  return result;
}

function mergeSort(arr) {
  if (arr.length <= 1) return arr;
  const mid = Math.floor(arr.length / 2);
  const left = mergeSort(arr.slice(0, mid));
  const right = mergeSort(arr.slice(mid));
  return merge(left, right);
}

퀵정렬 — 원리와 핵심 아이디어