原理:天勤P247
代码1(改编数据结构与算法分析):
#include <stdio.h>
#include <stdlib.h>
void Merge(int A[], int TmpArray[], int Lpos, int Rpos, int RightEnd)
{
int i,LeftEnd, NumberElems, TmpPos;
TmpPos = Lpos;
LeftEnd = Rpos - 1;
NumberElems = RightEnd - Lpos + 1;
while(Lpos <= LeftEnd && Rpos <= RightEnd)
if (A[Lpos] <= A[Rpos])
{
TmpArray[TmpPos] = A[Lpos];
TmpPos++, Lpos++;
}
else
{
TmpArray[TmpPos] = A[Rpos];
TmpPos++, Rpos++;
}
while (Lpos <= LeftEnd)
{
TmpArray[TmpPos] = A[Lpos];
TmpPos++, Lpos++;
}
while (Rpos <= RightEnd)
{
TmpArray[TmpPos] = A[Rpos];
TmpPos++, Rpos++;
}
for (i = 0; i < NumberElems; ++i,RightEnd--)
{
A[RightEnd] = TmpArray[RightEnd];
}
}
void MSort(int A[], int TmpArray[],