0
C++에서 재귀 병합 정렬 프로그램을 작성하고 싶습니다. 문제는 기본 케이스 아이디어를 재귀 적으로 작동시키는 방법을 모르겠습니다. 누구든지 Merg Function()
, Split Function()
및 MergSort()
기능의 기본 사례를 알려주십시오. 나는 너에게 감사 할 것이다.재귀 병합 정렬 C++
void Merg(int A[], int s1, int e1, int s2, int e2)
{
int B[8];
int i=0;
while (A[s1] < A[s2])
B[i] = B[s1];
i++;
s1++;
if (s1 == e1)
{
B[i] = A[s2];
i++;
s2++;
}
while (A[s2] < A[s1])
B[i] = B[s2];
i++;
s2++;
if (s2 == e2)
{
B[i] = A[s1];
i++;
s1++;
}
}
void Split(int A[], int s, int e)
{
int mid = (s+e)/2;
if (s < e && mid != 0)
{
Split(A, s, mid);
Split(A, mid+1, e);
}
Merg(A, s, mid, mid+1, e);
}
int main()
{
int A[8] = {10,4,8,12,11,2,7,5};
Split(A, 0, 7);
return 0;
}
[여기] 의사 코드가있다 (http://en.wikipedia.org/wiki/Mergesort). – user1118321