inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

정렬 - 병합정렬

병합정렬 질문 있습니다

346

김예서

작성한 질문수 6

3

강의 6:34까지 재귀함수로 배열의 반반을 원소 1개씩으로 분할하는 것 까지는 이해가 가는데, 왜 병합되어 정렬이 완료되는지는 이해가 안갑니다. ㅠㅠ

 

function MergeSort(arr, leftIndex, rightIndex){
if(leftIndex < rightIndex){
let midIndex = parseInt((leftIndex + rightIndex) / 2);
MergeSort(arr, leftIndex, midIndex);
MergeSort(arr, midIndex + 1, rightIndex);
}
}

까지는 분할만 이루어진 것 아닌가요?

아니면 분할+병합이 이루어져있다고 가정하는 건가요?

 

감사합니다.

알고리즘

답변 2

0

Chris

이게 저도 이해가 안 갔었는데 MergeSort 재귀 호출한 부분에서 정렬이 된 것처럼 설명이 되어있어서 오해의 소지가 있을 거 같습니다. 재귀에 Merge 구현 전까지는 정렬이 안되어 있다고 봐야하지 않을까 싶습니다.

0

감자

안녕하세요 김예서님.

Merge() 함수 호출 전에 호출한 두 개의 MergeSort()함수도 내부에선 Merge()를 실행하기 때문에 분할+병합이 모두 이루어졌다고 생각하셔야 합니다.

이것 때문에 재귀를 이해하는게 어렵지요 ㅎㅎ

궁금증이 해결되셨나요? 😊

큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.

0

71

2

이중연결 리스트 데이터 삭제시 질문이 있습니다.

1

61

2

자바스크립트 배열은 동적이 아닌가요?

1

85

2

자바스크립트 배열

0

75

2

코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/

0

148

2

공부 방식 질문 드립니다.

1

115

2

메모이제이션과 타뷸레이션 관련해서 질문드립니다.

1

166

2

병합정렬에서 질문이 있습니다.

2

141

1

병합정렬 질문 있습니다.

1

136

5

데이터 삽입, 삭제 함수 오류 범위 설정

0

156

2

해시 테이블에서 질문이 잇습니다.

2

126

2

시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?

1

147

2

터미널 설정

0

113

2

2:13분 관련 질문입니다

0

89

1

8:47초경부터 9:00초까지 질문입니다.

1

133

2

tail을 삭제하는 경우에 관련해서 질문이 있습니다.

0

106

1

2:36초 head 위치가?

1

109

2

환경구축강의 중 터미널 파일 실행오류

0

160

2

4:58 이중for문 질문있습니다.

0

103

1

hanoi함수 처음 호출에 대해서 여쭤봅니다.

1

129

2

해쉬테이블 데이터 관련해서 질문있습니다.

0

146

2

자바스크립트 Map과 어떤 차이가 있나요??

0

202

2

질문이있습니다.

0

102

1

2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다.(자료구조와 알고리즘)

1

145

2