Muscardinus

병합정렬 본문

알고리즘 이론

병합정렬

Muscardinus 2020. 12. 15. 01:08
728x90
const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0];

function mergeSort (array) {
  if (array.length === 1) {
    return array
  }
  const middle = Math.floor(array.length / 2);
  const left = array.slice(0,middle);
  const right = array.slice(middle);
  return merge(
    mergeSort(left),
    mergeSort(right)
  )
}

function merge(left, right){
  let retArr = [];
  let i = 0; // left Index
  let j = 0; // right Index
  while(i < left.length && j < right.length) {
    if (left[i] < right[j]) {
      retArr.push(left[i]);
      i++;
    } else {
      retArr.push(right[j]);
      j++;
    }
  }
  return retArr.concat(left.slice(i)).concat(right.slice(j));
}

const answer = mergeSort(numbers);
console.log(answer);
728x90

'알고리즘 이론' 카테고리의 다른 글

다익스트라 구현  (0) 2021.06.30
Sorting 문제 예시  (0) 2020.12.15
삽입정렬  (0) 2020.12.15
선택정렬  (0) 2020.12.15
버블정렬  (0) 2020.12.15
Comments