//合并排序
int num = 0;
void Merge(int arr[],int Tarr[],int s,int m,int e)
{
num++;
int i = s,j = m+1,k = s,x;
while(i<=m&&j<=e)
{
if(arr[i] < arr[j])
Tarr[k++] = arr[i++];
else
Tarr[k++] = arr[j++];
}
while(i<=m)Tarr[k++] = arr[i++];
while(j<=e)Tarr[k++] = arr[j++];
for( x = s;x<=e;x++)
arr[x] = Tarr[x];
}
void merge_Sort(int arr[],int Tarr[],int s,int e)
{
int mid,temp;
if((e-s)<2)
{
if((e-s)==1&&arr[s]>arr[e])
{
temp = arr[s];
arr[s] = arr[e];
arr[e] = temp;
}
}
else
{
mid=(s+e)/2;
merge_Sort(arr,Tarr,s,mid);
merge_Sort(arr,Tarr,mid+1,e);
Merge(arr,Tarr,s,mid,e);
}
}