插入排序还是归并排序。
插入排序比较好鉴别,不是插入就是归并排序。
注意样例里面是没有相等的数的,但是评分的里面有,所有鉴别插入排序的时候 记得是小于等于
#include <iostream>
#include <algorithm>
#define MAX 110
using namespace std;
int n;
int org[MAX], part[MAX];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> org[i];
}
for (int i = 1; i <= n; i++) {
cin >> part[i];
}
int p = 1;
while (p <= n && part[p - 1] <= part[p])
p++;
int pos = p;
while (p <= n && part[p] == org[p])
p++;
if (p == n + 1) {
cout << "Insertion Sort" << endl;
sort(part, part + pos + 1);
cout << part[1];
for (int i = 2; i <= n; i++) {
cout << " " << part[i];
}
cout << endl;
}
else {//merge
int len = 2;
while (len <= n) {
for (int i = 1; i <= n; i = i + len) {
if (i + len <= n ) {
sort(org + i, org + i + len);
}
else
sort(org + i, org + n + 1);
}
int p = 1;
while (p <= n && org[p] == part[p])
p++;
len *= 2;
if (p == n + 1) {
break;
}
}
//排序
for (int i = 1; i <= n; i = i + len) {
if (i + len <= n ) {
sort(part + i, part + i + len);
}
else
sort(part + i, part + n + 1);
}
cout << "Merge Sort" << endl;
cout << part[1];
for (int i = 2; i <= n; i++) {
cout << " " << part[i];
}
cout << endl;
}
return 0;
}