根据维基百科的定义:
插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。
归并排序进行如下迭代操作:首先将原始序列看成 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

代码:

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){int number,array[128],answer[128],i,r,range=2;scanf("%d",&number);for(i=0;i<number;i++)scanf("%d",array+i);for(i=0;i<number;i++)scanf("%d",answer+i);for(i=1;i<number;i++)if(answer[i]<answer[i-1])break;for(r=i;r<number;r++)if(answer[r]!=array[r])break;if(r<number){printf("Merge Sort\n");while(1){for(i=0;i<number;i++)if(answer[i]!=array[i])break;for(r=0;r<number/range;r++)sort(array+r*range,array+(r+1)*range);sort(array+number/range*range,array+number);if(i==number)break;range*=2;}}else{printf("Insertion Sort\n");sort(array,array+i+1);}for(i=0;i<number;i++){if(i)printf(" ");printf("%d",array[i]);}return 0;
}

提交结果:

案例 7-1.2 插入排序还是归并排序(25 分)相关推荐

  1. 7-273 插入排序还是归并排序 (25 分)

    7-273 插入排序还是归并排序 (25 分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置 ...

  2. PTA 7-3 插入排序还是归并排序 (25分)

    c++sort函数和equal函数的应用 一. sort函数 sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序. sort(first,last, ...

  3. 7-2 插入排序还是归并排序 (30分)

    根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...

  4. 案例 7-1.1 模拟 EXCEL 排序(25 分)

    Excel 可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. 输入格式: 输入的第一行包含两个正整数 N(≤10​5)和 C,其中 N 是纪录的条数,C 是指定排序的列号.之后有 N 行,每 ...

  5. 案例6-1.5 旅游规划 (25 分)邻接表实现

    案例6-1.5 旅游规划 (25 分) 用邻接表实现Dijkstra算法 这题一开始做的时候没想到用邻接数组做,所以就用的链表. 总的来说还是Dijkstra算法,只不过是存储方式的问题罢了,我用了四 ...

  6. 四种常见排序算法的对比和总结 插入排序、归并排序、快速排序、堆排序

    目录 一.排序算法的时间复杂度 二.排序算法是否是原地排序 三.排序算法的额外空间 四.排序算法的稳定性 Stable 五.总结 这里我们要总结的排序算法主要有4个,分别是插入排序Insertion ...

  7. C++学习之路 | PTA乙级—— 1035 插入与归并 (25 分)(精简)

    1035 插入与归并 (25 分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直 ...

  8. 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法

    problem 1035 插入与归并 (25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位 ...

  9. 7-47 对称排序 (25 分)

    7-47 对称排序 (25 分) 你供职于由一群丑星作为台柱子的信天翁马戏团.你刚完成了一个程序编写,它按明星们姓名字符串的长度非降序(即当前姓名的长度至少与前一个姓名长度一样)顺序输出他们的名单.然 ...

  10. 天梯赛 L2-016 愿天下有情人都是失散多年的兄妹 (25 分)[测试点1 3 4][未填坑]

    L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 思路: 在录入的时候用map和结构体储存性别,父母ID, 判断的时候先判断性别,再用dfs搜索第一个人五服之内的关系,并将关系任务ID存储到 ...

最新文章

  1. 讲故事,学内存--Oracle
  2. 《转》python学习--基础上
  3. tf.reshape(inputs, [-1,dim])的理解
  4. C语言实现TEA系列加解密算法
  5. Linux扩展根分区大小
  6. 华为云实时数据处理“三剑客”
  7. extract-text-webpack-plugin用法
  8. 大容量NoSql解决方案:Aerospike实战
  9. python中args是什么意思_理解Python中的*,*args
  10. [译]发布ABP v0.19包含Angular UI选项
  11. 微信小程序|基于小程序+C#实现聊天功能
  12. adobe creative cloud的开机自启如何阻止
  13. 高级Java程序员必备:《IDEA问题库》常见问题及解决方案,提升开发效率2(JAVA 小虚竹)
  14. 02_RampTexture(渐变纹理)
  15. 读优美博文了解低风险套利策略
  16. 数学建模对计算机的CPU150,三星Exynos M1秒了A9处理器,能击败骁龙820吗?
  17. java web: 上午 org.apache.catalina.core log 信息: 将servlet[***]标记为不可用/或者XXX资源不可用
  18. ICCV2021 Oral 论文及论文实现代码合集
  19. 面试积累(冒泡排序和选择排序)
  20. C++的 remove函数

热门文章

  1. MySQL 原理(一):MySQL 架构
  2. 2022蓝桥杯b组--X进制减法--c语言
  3. 引导学生发展计算思维能力
  4. HashMap红黑树原理分析
  5. 《北塔教你做插件 从RibbonX开始》第一讲: Hello Ribbon
  6. 最新消息,马云在杭州开了一家惊艳世界的动物园!
  7. load导入txt文件到mysql_mysql导入数据load data infile用法(将txt文件中的数据导入表中)...
  8. Python爬虫实现12306火车票查询
  9. java计算机毕业设计高校校园社交网络源程序+mysql+系统+lw文档+远程调试
  10. 夜天之书 #41 共同创造价值