#include <cstdio>
#include <algorithm>
using namespace std;
int flag3 = 0;
int n;
int arr[110];
int arr2[110];
int res[110];
int main(){
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
arr2[i] = arr[i];
}
for(int i=0; i<n; i++){
scanf("%d", &res[i]);
}
int flag = 0;
for(int i=1; i<n; i++){
int flag2 = 0;
int j;
int temp = arr[i];
for(j=i-1; j>=0; j--){
if(arr[j] > temp){
arr[j+1] = arr[j];
}else{
break;
}
}
arr[j+1] = temp;
for(int k=0; k<n; k++){
if(arr[k] != res[k]){
flag2 = 1;
break;
}
}
if(flag){
for(int k=0; k<n; k++){
printf("%d", arr[k]);
if(k != n-1){
printf(" ");
}
}
return 0;
}
if(!flag2){
printf("Insertion Sort\n");
flag = 1;
}
}
flag = 0;
for(int step=2; step/2<=n; step*=2){
int flag2 = 0;
for(int i=0; i<n; i+=step){
sort(arr2+i,arr2+min(i+step,n));
}
for(int k=0; k<n; k++){
if(arr2[k] != res[k]){
flag2 = 1;
break;
}
}
if(flag){
for(int k=0; k<n; k++){
printf("%d", arr2[k]);
if(k != n-1){
printf(" ");
}
}
return 0;
}
if(!flag2){
printf("Merge Sort\n");
flag = 1;
}
}
return 0;
}
PAT B1035 插入与归并 (25分)
最新推荐文章于 2024-10-16 00:00:43 发布