반응형
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))
);
}
'Javascript' 카테고리의 다른 글
(Javascript) Javascript Runtime (0) | 2023.04.04 |
---|---|
(JavaScript) JS 동작원리 (0) | 2023.04.02 |
(Javascript) selectionSort (0) | 2023.01.16 |
(Javascript) InsertSort (0) | 2023.01.16 |
(Javascript) bubbleSort (0) | 2023.01.16 |