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