#include <iostream>
#include <algorithm>
using namespace std;
bool judge(int s1[],int s2[],int N){
for(int i=1;i<=N;i++)
if(s1[i]!=s2[i]) return false;
return true;
}
int main(){
int N,initial[150],process[150];
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&initial[i]);
for(int i=1;i<=N;i++)
scanf("%d",&process[i]);
for(int i=2;i<=N;i++){
sort(initial+1,initial+i+1);
if(judge(initial,process,N)){
printf("Insertion Sort\n");
sort(initial,initial+i+2);
for(int i=1;i<N;i++)
printf("%d ",initial[i]);
printf("%d",initial[N]);
return 0;
}
}
printf("Heap Sort\n");
int pos=2;
for(;pos<=N;pos++){
if(process[pos]>process[1]) break;
}
swap(process[1],process[pos-1]);
pos--;
for(int low=1,high=2*low;high<pos;){
if(process[high+1]>process[high]&&high+1<pos) high++;
if(process[high]>process[low]){
swap(process[high],process[low]);
low=high;
high=2*low;
}else break;
}
for(int i=1;i<N;i++)
printf("%d ",process[i]);
printf("%d",process[N]);
return 0;
}
PAT A1098
最新推荐文章于 2022-02-23 15:10:27 发布