关于归并排列的问题
#include<stdio.h>void Merge(int *a,int *c,int i,int j,int k)
{
int n,t;
n=k;t=i;
printf("i=%d j=%d \n",i,j);
while(i!=k&&n!=j+1)
if(a[i]>a[n])
c[t++]=a[n++];
else
c[t++]=a[i++];
if(i==k)
for(;n<j+1;n++)
c[t++]=a[n];
else
for(;i<k;i++)
c[t++]=a[i];
}
int MergeSort(int* a,int* b,int n,int m)
{
if(n>m)
{
MergeSort(a,b,(m+n+1)/2-1,m);
MergeSort(a,b,n,(m+n+1)/2);
Merge(a,b,m,n,(m+n+1)/2);
}
}
int main()
{
int a[7]={2,4,6,1,3,5,9},c[7],i;
MergeSort(a,c,6,0);
for(i=0;i<7;i++)
printf("%d ",c[i]);
return 0;
}
为什么不能排比如a[0],a[1]两相邻元素??