merge sort를 실행하기 위해서, 첫 번째로 두 정렬된 배열을 병합하는 함수를 실행해야 함
두 정렬된 배열을 병합하는 함수 시나리오
빈 배열을 생성하고, 각 배열의 가장 작은 값을 선택하기
배열을 모두 순회할 때까지 while 문을 실행함
function merge(arr1, arr2) {
let results = [];
let i = 0;
let j = 0;
while (i < arr1.length && j < arr2.length) {
if(arr1[i] < arr2[j]) {
results.push(arr1[i]);
i++;
} else {
results.push(arr2[j]);
j++;
}
}
while (i < arr1.length) {
results.push(arr1[i]);
i++;
}
while (j < arr2.length) {
results.push(arr2[j]);
j++;
}
return results;
}
function mergeSort(arr) {
if (arr.length <= 1) return arr;
let mid = Math.floor(arr.length/2);
let left = mergeSort(arr.slice(0, mid));
let right = mergeSort(arr.slice(mid));
return merge(left, right);
}
console.log(mergeSort([10, 24, 76, 73, 4, 1]));