1089. Insert or Merge 解析

来源:互联网 发布:网络蔬菜超市 编辑:程序博客网 时间:2024/06/06 16:40

插入排序还是归并排序。

插入排序比较好鉴别,不是插入就是归并排序。

注意样例里面是没有相等的数的,但是评分的里面有,所有鉴别插入排序的时候 记得是小于等于

#include <iostream>#include <algorithm>#define MAX 110using 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 {//mergeint len = 2;while (len <= n) {for (int i = 1; i <= n; i = i + len) {if (i + len <= n ) {sort(org + i, org + i + len);}elsesort(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);}elsesort(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;}


0 0
原创粉丝点击