0
문제가 있습니다. 병합 정렬이 어떻게 작동하는지 배우기 시작했고, 이제 막 달라 붙었습니다. 병합 함수에서 두 번째 재귀를 이해할 수 없습니다. 원래 배열 : 첫 번째 재귀가 완료병합 재귀 호출
int merge_sort(int input[], int p, int r)
{
if (p >= r) return 0;
int mid = floor((p + r)/2);
merge_sort(input, p, mid);
**merge_sort(input, mid + 1, r);**
merge(input, p, r);
}
때, 나는 이런 식으로 뭔가 끝낼 3 4 5 6 7 8
3 4 5 | 6 7 8
3 4 | 5
3 | 4
3
그리고 제 재귀 시작. 그럼, 내 질문은 : 하나의 요소 (이 경우에는 하나의 숫자, 3) 또는 원래 배열 (처음부터 6 요소 배열)에서 배열로 두 번째 재귀를 시작합니까? 내가 무슨 뜻인지 이해할 수 있기를 바랍니다. 감사.
감사합니다, 그래서 그것은 왼쪽 분할 재귀 번 호출 한 다음 오른쪽 분할 재귀 번 등이라는 것을 의미한다 ... 내가 그걸 가지고 있다면 흔적. – mangu
예 정확히 그렇습니다. –