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

wodms4525님의 프로필 이미지

작성한 질문수

제주코딩베이스캠프 Code Festival: JavaScript 100제

문제51 : merge sort를 만들어보자

return merge(mergeSort(left), mergeSort(right));

20.09.11 01:30 작성

·

182

0

return merge(mergeSort(left), mergeSort(right));

위 부분이 이해가 안되서 질문 남깁니다.

mergeSort(left)를 끝까지 다 돌고 나면 숫자가 하나밖에 안남는데,

어떻게 merge에서는 모든 값이 다 리턴되나요?

답변 1

0

정태웅님의 프로필 이미지

2020. 11. 07. 20:41

재귀함수라 좀 복잡한데요
mergeSoft 함수는 merge함수를 리턴하는데
return merge(mergeSort(left), mergeSort(right));
매개변수로 mergeSoft함수를 다시 호출하고 호출한 함수에서
merge함수를 다시 리턴하고 재귀함수 종료 조건
(배열의 크기가 1 이하일때까지)까지 반복된 다음에
요소가 하나인 배열에서부터야 merge 함수가 실행되요
merge함수가 실행되면 값이 정렬되면서 그 정렬된 값으로 다시
merge함수가 실행되는거죠