#include <bits/stdc++.h>
using namespace std;
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
#endif
int N;
cin >> N;
int v1[N], v2[N];
int i, j;
int len = 0; //len用來表示已排序長度
bool flag = true;//flag用來表示歸併排序的情況是否已經到達輸入的排序情況 或者用來表示是否爲插入排序
for(i = 0; i < N; i++){
cin >> v1[i];
}
for(i = 0; i < N; i++){
cin >> v2[i];
}
for(i = 0; i < N - 1; i++){
if(v2[i] <= v2[i + 1]) len++;
else break;
}
for(i = len + 1; i < N; i++){
if(v2[i] != v1[i]){
flag = false;
break;
}
}
if(flag){
cout << "Insertion Sort" << endl;
sort(v2, v2 + len + 2);
for(i = 0; i < N; i++){
if(i == 0) cout << v2[i];
else cout << " " << v2[i];
}
return 0;
}else{
cout << "Merge Sort" << endl;
flag = true;
len = 1;
while(flag){
flag = false;
for(i = 0; i < N; i++){
if(v1[i] != v2[i]) flag = true;
}
len *= 2;
for(j = 0; j < N; j += len){
sort(v1 + j, v1 + min(j + len, N));
}
}
for(i = 0; i < N; i++){
if(i == 0) cout << v1[i];
else cout << " " << v1[i];
}
return 0;
}
return 0;
}
PTA 09-排序2 Insert or Merge (25 分)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.