• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

20.09.11 01:30 작성 조회수 123

0

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

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

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

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

답변 1

답변을 작성해보세요.

0

정태웅님의 프로필

정태웅

2020.11.07

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