#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <map>
#include <queue>
#include <stack>
#include <math.h>
using namespace std;
int N;
int A[110],B[110],C[110];
bool judge(int A[],int B[])
{
for(int i=0;i<N;i++)
{
if(A[i]!=B[i])return false;
}
return true;
}
int main()
{
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d",&A[i]);
}
for(int i=0;i<N;i++)
{
B[i]=A[i];
}
for(int i=0;i<N;i++)
{
scanf("%d",&C[i]);
}
bool start=false,flag=false;
int step=1;
while(step<=N)
{
sort(A,A+step);
if(judge(A,C)&&step!=1)
{
flag=true;
step++;
printf("Insertion Sort\n");
sort(A,A+step);
for(int i=0;i<N;i++)
{
if(i!=0)printf(" ");
printf("%d",A[i]);
}
break;
}
step++;
}
if(flag==false)
{
step=2;
while(step<=N)
{
for(int i=0;i<N;i+=step)
{
int x=min(N,i+step);
sort(B+i,B+x);
}
if(judge(B,C))
{
flag=true;
printf("Merge Sort\n");
step*=2;
for(int i=0;i<N;i+=step)
{
int x=min(N,i+step);
sort(B+i,B+x);
}
for(int i=0;i<N;i++)
{
if(i!=0)printf(" ");
printf("%d",B[i]);
}
break;
}
step*=2;
}
}
return 0;
}
PAT甲1089 Insert or Merge(25 分)
最新推荐文章于 2019-11-24 13:53:56 发布