插入排序是每次排好一个 归并排序是每次排好一堆
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 110;
int main(void)
{
freopen("pat0314/in.txt","r",stdin);
int n;
int a[111];
int b[111];
cin>>n;
for(int i = 0;i<n;i++)
{
cin>>a[i];
}
for(int i = 0;i < n;i++)
{
cin>>b[i];
}
int i,j;
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)
{
cout<<"Insertion Sort"<<endl;
sort(a,a + i + 2);
}
else
{
cout<<"Merge Sort"<<endl;
int flag = 1;
int k = 1;
while(flag)
{
flag = 0;
for(int i = 0;i<n;i++)
{
if(a[i] != b[i])
{
flag = 1;
break;
}
}
k *= 2;
int group = n / k;
for(int i = 0;i<group;i++)
{
sort(a + (i * k),a + (i + 1) * k);
}
sort(a + n / k * k,a + n);
}
}
for(int i = 0;i<n;i++)
{
if(i == 0)
{
printf("%d",a[i]);
}
else
{
printf(" %d",a[i]);
}
}
return 0;
}