Merge Sort
병합정렬
시간 복잡도: O(nlogn)
공간 복잡도: O(n)
merge 함수는 두 배열을 합쳐 한 배열로 정렬합니다.
mergeSort 함수는 재귀적으로 배열을 나누고 merge 함수로 합칩니다.
/**
* @param {int[]} leftArr
* @param {int[]} rightArr
*/
const merge = (leftArr, rightArr) => {
let result = []
let leftIndex = 0
let rightIndex = 0
while (leftIndex < leftArr.length && rightIndex < rightArr.length) {
if (leftArr[leftIndex] < rightArr[rightIndex]) {
result.push(leftArr[leftIndex])
leftIndex++
} else {
result.push(rightArr[rightIndex])
rightIndex++
}
}
while (leftIndex < leftArr.length) {
result.push(leftArr[leftIndex])
leftIndex++
}
while (rightIndex < rightArr.length) {
result.push(rightArr[rightIndex])
rightIndex++
}
return result
}
/**
*
* @param {int[]} arr
*/
const 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))
let result = merge(left, right)
return result
}
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
javascript. 버블, 선택, 삽입 정렬 (0) | 2020.09.13 |
---|---|
Problem Solving Approach (0) | 2020.07.09 |
자바스크립트. 문자 세기 (0) | 2020.07.08 |
자바스크립트. 정렬 순서 (0) | 2020.07.04 |
자바스크립트. for 반복문 수행시간 비교 (0) | 2020.07.04 |