#include
#include
using namespace std;
int main()
{
int n,i,h,j,t,m=0,q,z=1,k;
int a[1000],b[1000],c[1000];
scanf("%d",&n);
for(i=0;i scanf("%d",&c[i]);
a[i]=c[i];
}
sort(a,a+n/2);
for(i=0;i scanf("%d",&b[i]);
if(a[i]!=b[i]){
m=1;
}
}
if(m==1){
printf("Merge Sort\n");
q=2;
while(z!=0){
z=0;
for(i=0;i if(n-i-q>=0){
sort(c+i,c+i+q);
}
else{
sort(c+i,c+n);
}
}
for(i=0;i<n;i++){
if(c[i]!=b[i]){
z=2;
break;
}
}
if(z==2){
q=2*q;
}
}
q=2*q;
for(i=0;i<n;i+=q){
if(n-i-q>=0){
sort(c+i,c+i+q);
}
else{
sort(c+i,c+n);
}
}
printf("%d",c[0]);
for(i=1;i<n;i++){
printf(" %d",c[i]);
}
printf("\n");
}
else{
printf("Insertion Sort\n");
sort(a,a+n/2+1);
printf("%d",a[0]);
for(i=1;i<n;i++){
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
其他都正确,只出现一个段错误,不知道哪里出错了。希望大神帮我看一下,谢谢!