归并排序
每次只需要把两个序列的最小元素加以比较,删除其中较小元素并入合并后的新表即可。
viod merge_sort(int *A,int x,inty,int *T)
{
if(y-x>1)
{
int m=x+(y-x)/2;
int p=x,q=m,i=x;
merge_sort(A,x,m,T);
merge_sort(A,m,y,T);
while(p<m||q<y)
{
if(q>=y||(p<m&&A[p]<=A[q]))
else T[i++]=A[q++];
}
for(i=x;i<y;i++)A[i=T[i];
}
}