求大神看看哪里错了 没有报错 但输入10个数后 提示运行错误 然后关闭了
#include <stdio.h>
#include <stdlib.h>
void mergesort(int *num,int start,int end);
void merge(int *num,int start,int middle,int end);
int main()
{
void mergesort(int *num,int start,int end);
void merge(int *num,int start,int middle,int end);
int i;int a[10];
for(i=0;i<10;i++)
scanf("%d",a[i]);
mergesort(a,0,9);
merge(a,0,(0+9)/2,9);
for(i=0;i<10;i++)
printf("%d",a[i]);
system("pause");
return 0;
}
void mergesort(int *num,int start,int end)
{
int middle;
if(start<end)
{middle=(start+end)/2;
mergesort(num,start,middle);
mergesort(num,middle+1,end);}
merge(num,start,middle,end);
}
void merge(int *num,int start,int middle,int end)
{
int n1=middle-start+1;
int n2=end-middle;
int *p=(int*)malloc(sizeof(int)*(n1+1));
int *l=(int*)malloc(sizeof(int)*(n2+1));
int i,k,j=0;
for(i=0;i<n1;i++)
p[i]=num[i];
p[n1+1]=1000;
for(i=0;i<n2;i++)
l[i]=*(num+i+middle-start+1);
l[n2+1]=1000;
i=0;
for(k=0;k<end-start+1;k++)
if(p[i]>l[j])
{
num[k]=l[j];j++;
}
else
{
num[k]=p[i];i++;
}
}
|