mergesort 알고리즘의 일부인 재귀 정렬 함수에서 머리를 쓰려고합니다. 다음은 내가 가지고있는 코드입니다. 나는 거의 확실합니다 (온라인 과정을 따라).재귀 상한 mergesort
private static void sort(Comparable[] a, Comparable[] aux, int low, int high) {
if (high <= low) return;
int mid = low + (high - low)/2;
sort (a, aux, low, mid);
sort (a, aux, mid+1, high);
merge(a, aux, low, mid, high);
}
나는 그것을 병합 후 하위 어레이 길이 하나 (및 정의에 의한 분류)의 때까지 각이 반복, 아래로 2 개 작은 하위 어레이에 서브 어레이 나누기 및 does- 머지 소트 이해. 그러나이 정렬 함수가이 작업을 수행하는 데 사용하는 실제 메서드는 제가 따라하기가 어렵습니다. 어쩌면 내가 재귀 함수에 익숙하지 않기 때문에,하지만 누구나 작업 순서와 첫 번째 병합이 발생할 때의 인수가 무엇인지 밝힐 수 있는지 궁금합니다.
예를 들어, sort (aux, aux, low, mid)에 대한 FIRST 재귀 호출에 도달하면 - 작업을 중단하고 두 번째 정렬 및 병합 기능으로 진행하지 않고 대신 즉시 새로운 매개 변수? 이 경우 두 번째 호출을 정렬 할 때; sort (a, aux, mid + 1, high); 나오다?
도움 주셔서 감사합니다. 제가 여기에 게시 한 것은 이번이 처음입니다. 포맷 문제가 있다면 알려주세요. 이 (A, 보조, 낮은, 중반를) 정렬 할 FIRST 재귀 호출 안타 때