1035 插入与归并

根据维基百科的定义:

插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。

现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?

输入格式:

输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。

输出格式:

首先在第 1 行中输出Insertion Sort表示插入排序、或Merge Sort表示归并排序;然后在第 2 行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行首尾不得有多余空格。

输入样例 1:

10
3 1 2 8 7 5 9 4 6 0
1 2 3 7 8 5 9 4 6 0

输出样例 1:

Insertion Sort
1 2 3 5 7 8 9 4 6 0

输入样例 2:

10
3 1 2 8 7 5 9 4 0 6
1 3 2 8 5 7 4 9 0 6

输出样例 2:

Merge Sort
1 2 3 8 4 5 7 9 0 6   题解:这道题看上去是考插入排序和归并排序,但是其实根据题目意思,只要稍微了解这两个算法,就完全能做出来了。
  插入排序如题目所说是一个一个插入,所以如果是使用插入排序的数据,一定是前面有序,后面无序的。
  归并排序则是先将相邻两组进行排序,完成后,再将相邻两组进行排序,直到将整个数列规整为一组。,使用归并排序的数据,一定是前n个有序,中间n个有序,后n个有序。
  这道题目判断是插入排序还是归并排序的方法有许多,我采用的是从无序的第一个元素开始,与初始元素对比,若存在和初始元素不一样的,则是归并排序,否则是插入排序。。
  这道题的一个坑点在于,在判断为归并排序后,不能直接进行下一步操作,必须重新计算。 代码如下:
 #include<iostream>
#include<algorithm>
using namespace std;
int a[], b[], c[];
int main()
{
int n, j, temp = ;
bool flag = true;
scanf("%d",&n);
for(int i = ; i < n; i++){
scanf("%d",&a[i]);
}
for(int i = ; i < n; i++){
scanf("%d",&b[i]);
c[i] = b[i];
}
temp = b[];
for( j = ; j < n; j++){
if(temp <= b[j])
temp = b[j];
else{
temp = j;
break;
}
}
for( int k = temp+; k < n; k++){
if(b[k] != a[k]){
flag = true;
break;
}
if( k == n-)
flag = false;
}
if(flag){
printf("Merge Sort\n");//不能直接归并,必须重新计算
temp = ;
bool flag3 = ;
while(flag3){
flag3 = ;
for(int i = ; i < n; i++){
if( a[i] != b[i] ){
flag3 = ;
break;
}
}
temp *= ;
for( int i = ; i < n; i+=temp){
if(i+temp < n)
sort(a+i,a+i+temp);
else
sort(a+i,a+n);
}
}
}
else{
sort(a,a+temp+);
printf("Insertion Sort\n");
}
bool flag2 = false;
for( int i = ; i < n; i++){
if(!flag2)
flag2 = true;
else
printf(" ");
printf("%d",a[i]);
}
return ;
}

PAT Basic 1035的更多相关文章

  1. PAT (Basic Level) Practise (中文)-1035. 插入与归并(25)

    PAT (Basic Level) Practise (中文)-1035. 插入与归并(25)   http://www.patest.cn/contests/pat-b-practise/1035 ...

  2. PAT Basic 1057

    1057 数零壹 给定一串长度不超过 10​5​​ 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有 ...

  3. PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)

    PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...

  4. PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)

    PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)  http://www.patest.cn/contests/pat-b-practise/1 ...

  5. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  6. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  7. PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)

    PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)    http://www.patest.cn/contests/pat-b-practise/10 ...

  8. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  9. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)

    PAT (Basic Level) Practise (中文)-1028. 人口普查(20)   http://www.patest.cn/contests/pat-b-practise/1028 某 ...

随机推荐

  1. GYM 101889B(找规律)

    乍一看很唬人,草稿纸上多写几个发现规律:两个元音算一层,像剥洋葱一样,外面的其实都动不了,能变顺序的只有最里层的辅音. inline bool ok(char ch) { return ch == ' ...

  2. HTML文档设置标记

    格式标记 1.<br> 强制换行标记,让后面的文字.图片.表格等,显示在下一行.单标记 2.<p> 换段落标记,换段落是由于多个空格和回车在HTML中会被等效为一个空格,所以H ...

  3. Java中的list与Set、Map区别及适用场景

    Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类,但是却让其被继承产生了两个接口,就是Set和List.Set中不能包含重复的元素.List是一个有序的集合,可以包含 ...

  4. Storm编程入门API系列之Storm的Topology多个Executors数目控制实现

    前期博客 Storm编程入门API系列之Storm的Topology默认Workers.默认executors和默认tasks数目 Storm编程入门API系列之Storm的Topology多个Wor ...

  5. jsp第一章 动态网页开发基础

    动态网站可以实现交互功能,如用户注册.信息发布.产品展示.订单管理等等: 动态网页并不是独立存在于服务器的网页文件,而是浏览器发出请求时才反馈网页: 动态网页中包含有服务器端脚本,所以页面文件名常以a ...

  6. jdk下载安装配置环境变量

    因为学习原因要用到一些工具,jdk12的版本与那个工具不兼容,所以这里推荐使用的是jdk1.8的版本, 不知道是电脑原因还是啥原因,jdk 12的版本用不了配不好环境变量. 首先可以在官网下载jdk1 ...

  7. input type=file 选择图片并且实现预览效果

    通过<input />标签,给它指定type类型为file,可提供文件上传: accept:可选择上传类型,如:只要传图片,且不限制图片格式,为image/*: multiple:规定是否 ...

  8. 【extjs6学习笔记】0.1 准备:基础概念 (01)

    1. Ext.application 应用程序入口点 2. Ext.onReady() 页面加载完成后触发动作 3. Ext.define() 4. Ext.data.proxy.Proxy 5. E ...

  9. 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)

    题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...

  10. Microsoft Sql server2005的安装步骤和常见问题解决方案

    一:安装sql server 2005过程中出现 如下问题:“选择的功能中没有任何功能可以安装或升级”: 解决方案:Microsoft SQL Server 2005→配置工具→SQL配置管理器→SQ ...