本题有几个坑点
for循环里面未有式子的时候最后记得加上“;”否则会超时
下面提供解法,参考了晴神和柳神的解法
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int maxn=101;
int main()
{
int a[maxn],b[maxn],i,j,k=1;
int n;
cin>>n;
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
scanf("%d",&b[i]);
for (i=0;i<n-1&&b[i]<=b[i+1];i++);//此处需注意要加“;”
for (j=i+1;j<n&&a[j]==b[j];j++);
if (j==n)
{
printf("Insertion Sort\n");
sort(a,a+i+2);//此处是a+i+2,需注意,对i+2个数据排序;
}
else
{
printf("Merge Sort\n");
bool flag=true;
while (flag)
{
for (i=0;i<n&&a[i]==b[i];i++);
if (i==n)
flag=false;
k=k*2;
for (i=0;i<n;i+=k)
{
sort(a+i,a+min(i+k,n));
}
}
}
for (int i=0;i<n;i++)
{
printf("%d",a[i]);
if (i!=n-1)
printf(" ");
}
}