Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

배열 JavaScript를 재귀적으로 정렬하기 위해 병합 정렬을 사용

<시간/>

Numbers의 배열을 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 병합 정렬 알고리즘을 사용하여 배열을 정렬해야 합니다.

병합 정렬

병합 정렬은 두 부분 또는 프로세스로 구성됩니다. -

  • 컬렉션을 단일 단위로 분할하는 재귀 부분
  • 그런 다음 올바른 순서로 다시 결합하는 반복적인 부분입니다.

예시

const arr = [23, 4, 67, 32, 1, 7, 56, 5, 89];
const mergeSort = arr => {
   if (arr.length < 2){
      return arr;
   }
   const middle = Math.floor(arr.length / 2);
   const left = arr.slice(0, middle), right = arr.slice(middle, arr.length);
   return merge(mergeSort(left), mergeSort(right));
};
const merge = (left, right) => {
   const res = [];
   while (left.length && right.length) {
      if (left[0] <= right[0]){
         res.push(left.shift());
      }
      else{
         res.push(right.shift());
      };
   }
   while (left.length){
      res.push(left.shift());
   };
   while (right.length){
      res.push(right.shift());
   };
   return res;
};
console.log(mergeSort(arr));

출력

콘솔의 출력은 -

[
   1, 4, 5, 7, 23,
   32, 56, 67, 89
]