我刚刚学C语言,看到归并排序的算法的伪代码,但不知怎么翻译成C语言,请高手帮帮忙。不胜感谢。

MERGE(A,p,q,r)
N1←q-p+1
N2←r-q
Creat arrays L[1……n1+1] and R[1….n2+1]
For i←1 to n1
Do l[i]←A[p+i-1]
For j←1 to n2
Do R[j]←A[q+j]
L[n1+1]←∞
R[n2+1]←∞
i←1
j←1
for k←p to r
do if Li]<=R[j]
then A[k]←l[j]
i←i+1
else A[k]←R[j]
j←j+1

NERGE_SORT(A,p,r)
If p<r
Then q←[(p+r)/2]
MERGE_SORT(A,p,q)
MERGE_SORT(A,p+1,q)
MERGE_SORT(A,p,q,r)

//希望对你有帮助
template<class T>
MERGE(T* A, int p,int q, int r)
{
int N1 = q - p + 1, N2 = r - q, i, j;
T* L = new T[N1+2];//未用L[0]与R[0]
T* R = new T[N2+2];
for(i = 1;i < N1+1;i++)
L[i] = A[p + i - 1];
for(j = 1;j < N2 + 1;j++)
R[j] = A[q+j];
L[N1+1] = maxnum;//定义一个永远不可达到的最大值,作为哨兵
R[N2+1] = maxnum;
i = 1;j = 1;
for(int k = p;k <= r;k++)
if(L[i] <= R[j])
{
A[k] = L[i];
i++;
}
else
{
A[k] = R[j];
j++;
}
}
template<class T>
MERGE-SORT(T * A, int p, int r)
{
if(p < r)
q = (p + r) / 2;
MERGE-SORT(A,p,q);
MERGE-SORT(A,q+1,r);
MERGE(A,p,q,r);
}
温馨提示:答案为网友推荐,仅供参考