请大家帮我看一下这段代码的问题,谢谢了
/*先拆分,再两两归并!*/
#include<stdio.h>
#define MAXSIZE 10
/*归并后的数据存入list1*/
void merging(int *list1, int list1_size, int *list2, int list2_size)//归并代码
{
int temp[MAXSIZE];
int i, j, k;
int m;
i =j =k =0;
while(i < list1_size && j < list2_size)
{
if(list1[i] < list2[i])
{
temp[k++] = list1[i++];
}
else
{
temp[k++] = list2[j++];
}
}
while(i < list1_size)
{
temp[k++] = list1[i++];
}
while(j < list2_size)
{
temp[k++] = list2[j++];
}
for(m=0; m < (list1_size + list2_size); m++)
{
list1[m] = temp[m];
}
}
void MergeSort(int k[] , int n)//递归拆分代码
{
if (n > 1)
{
int *list1 = k;
int list1_size = n/2;
int *list2 = k + n/2;
int list2_size = n - list1_size;
MergeSort(list1, list1_size);
MergeSort(list2, list2_size);
merging(list1, list1_size, list2, list2_size);//归并
}
}
int main()
{
int i, a[10]={2,4,6,8,0,9,7,5,3,1};
MergeSort(a,10);
printf("排序后的结果是:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}