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))
);
}