题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805377432928256
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1],b[n+1],index=1,flag=1;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
cin>>b[i];
if(i!=1&&b[i]<b[i-1])
if(index==1) index=i;
}
// if(index1==0) index1==n;
for(int i=index;i<=n;i++)
{
if(a[i]!=b[i]){
flag=0;
break;
}
}
if(flag){
cout<<"Insertion Sort"<<endl;
sort(b+1,b+index+1);
for(int i=1;i<=n;i++)
{
if(i!=1) cout<<" ";
cout<<b[i];
}
}
else
{
cout<<"Merge Sort"<<endl;
int x=1,flag1=1;
while(flag1)
{
flag1=0;
for(int i=1;i<=n;i++)
{
if(a[i]!=b[i]){
flag1=1;
break;
}
}
x*=2;
for(int i=1;i<=n;i+=x)
sort(a+i,i+x>n+1?a+n+1:a+i+x);
}
for(int i=1;i<=n;i++)
{
if(i!=1) cout<<" ";
cout<<a[i];
}
}
}