JS 노트 병합정렬

주재일·2021년 6월 13일
0

JS

목록 보기
11/33

병합정렬
.
시간복잡도 O(n log n)
입력값을 2로 나누어 분할 -> 정복 하는 방식

let 입력값 = [12, 4, 3, 4, 6, 99, 123, 33, 42]

function 병합정렬(입력배열){
  let 입력배열의길이 = 입력배열.length;
  let 결과값 = [];
  
  if(입력배열의길이 <= 1){
    return 입력배열
  }
  
  let mid = parseInt(입력배열의길이/2);
  let left = 병합정렬(입력배열.slice(0, mid))
  let right = 병합정렬(입력배열.slice(mid))

  while(left.length !=0 && right.length !=0){
    if(left[0]<right[0]){
      결과값.push(left.shift())
    }else{
      결과값.push(right.shift())
    }
  }
  while(left.length!=0){
    결과값.push(left.shift())
  }
  while(right.length!=0){
    결과값.push(right.shift())
  }
  
  return 결과값
  
}

console.log(병합정렬(입력값))

profile
늦게 시작했으니 저는 늦둥이인가요?

0개의 댓글

Powered by GraphCDN, the GraphQL CDN