인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

AEJEONG님의 프로필 이미지
AEJEONG

작성한 질문수

눈떠보니 코딩테스트 전날

병합정렬

call stack error

작성

·

395

0

똑같이 작성한것같은데 에러가 콜 스택 에러가 나는데 왜  그런걸까요 ...ㅠㅠ

function mergeSort(array){
let arrayLength = array.length;
let result = [];
if(arrayLength <= 1){
return array;
}

let mid = parseInt(array/2);
let firstGroup = mergeSort(array.slice(0,mid));
let secondGroup = mergeSort(array.slice(mid, ))

while(firstGroup.length != 0 && secondGroup.length !=0){
if(firstGroup[0]<secondGroup[0]){
    result.push(firstGroup.shift());
}else{
result.push(secondGroup.shift());
}
}

while(firstGroup.length != 0){
result.push(firstGroup.shift())
}

while(secondGroup.length != 0){
result.push(secondGroup.shift())
}

return result;
}

답변 2

0

안녕하세요, AEJEONG님 :)
우선 답변이 늦어진 점 죄송합니다.

AEJEONG님께서 질문 주신 코드 내용을 확인해보니

let mid = parseInt(array/2);

중간값을 구하실 때 배열의 길이(arrayLength)를 2로 나누어야 하는데 배열(array)을 2로 나누어서 생기는 문제로 보입니다.

array/2 -> arrayLength/2 로 수정 후에도 문제가 발생하시거나 충분한 답변이 되지 않았다면 답글 부탁드립니다.
감사합니다. 😊

0

저도 그래요. Shift로 값이 모두 제거되서 undefined 상태로 while문에 들어가는것같은데... 왜이러죠 /

AEJEONG님의 프로필 이미지
AEJEONG

작성한 질문수

질문하기