void insert(int a[],int l,int n)
{
for (int i = l;i < n;++i)
{
int v = a[i];
int j = i;
while ((j > 0)&&(v < a[j-1]))
{
a[j] = a[j-1];
j--;
}
a[j] = v;
}
}
#define MIN(a,b) (a < b)?a:b
void mergeSortC(int a[],int l,int r)
{
for (int m = 1;m < r;m = m+m)
{
for (int i = 0;i <= r-m;i +=2*m)
{
if ((2*m-1) < 10)
{//这个10是自己定义的
insert(a,i,MIN(i+2*m-1,r)+1);
}
else
{
mergeA(a,i,i+m-1,MIN(i+2*m-1,r));
}
}
}
}