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