PAT乙级别.1035. 插入与归并(25)

浙大PAT基础题全AC代码包:含MinGW/VC6可执行文件与多IDE项目配置 这个资源包收录浙江大学PAT平台基础级别全部典型题目的完整通过代码,覆盖1005继续(3n+1)猜想、1008数组循环右移、1010一元多项式求导、1028人口普查、1029旧键盘、1030完美数列、1031查验身份证、1032挖掘机技术哪家强、1033旧键盘打字、1034有理数四则运算、1035插入与归并等高频题目。每道题均提供标准C++源码(main.cpp)、已编译的Windows可执行文件(.exe)、目标文件(.o)、Makefile.win工程脚本,以及VC6、Code::Blocks(.cfp 阅读详情

1035. 插入与归并(25)

题目

根据维基百科的定义:

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

归并排序进行如下迭代操作:首先将原始序列看成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

PAT链接

思路

搞清楚插入排序与归并排序的实现

代码

/**
* @tag     PAT_B_1035
* @authors R11happy (xushuai100@126.com)
* @date    2016-9-7 14:57-16:00
* @version 1.0
* @Language C++
* @Ranking  740/614
* @function null
*/

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
int origin[110],changed[110],temp[110],output[110];

//判断两个序列是否一样
bool equals(int A[], int B[], int len)
{
    for(int i = 0; i<len; i++)
    {
        if(A[i] != B[i])    return false;
    }
    return true;
}

bool insertSort(int A[], int len)
{
    bool flag = false;
    for(int i = 0; i<len; i++)
    {
        temp[i] = A[i];
    }
    //每趟排完,前i个数是有序的
    for(int i = 1; i<len; i++)
    {
        for(int j = i; j>0; j--)    //进行一趟插入排序
        {
            if(temp[j] < temp[j-1])   swap(temp[j], temp[j-1]);
        }
        if(flag == true)
        {
            for(int k = 0; k<len; k++)  output[k] = temp[k];
            return true;
        }
        if(equals(changed, temp, len))   flag = true;
    }
    return false;
}

void merge(int A[], int L1, int R1, int L2, int R2)
{
    int i = L1, j = L2;
    int store[110], index = 0;
    while(i <= R1 && j <= R2)
    {
        if(A[i] < A[j]) store[index++] = A[i++];
        else    store[index++] = A[j++];
    }
    while(i <= R1)  store[index++] = A[i++];
    while(j <= R2)  store[index++] = A[j++];
    for(int k = 0; k < index; k++)
    {
        A[L1+k] = store[k]; //千万注意,这里是A[L1+k]不是A[k]
    }
}

bool mergeSort(int A[], int len)
{
    bool flag = false;
    for(int i = 0; i<len; i++)
    {
        temp[i] = A[i];
    }

    for(int step = 2; step/2 < len; step *= 2)
    {
        for(int i = 0; i<len; i+=step)
        {
            int mid = i + step/2 -1;    //该组左半边最后一个元素
            if(mid + 1 <len)
            {
                merge(temp, i, mid, mid+1, min(len-1, i+step-1));
            }
        }
        if(flag == true)
        {
            for(int k = 0; k<len; k++)  output[k] = temp[k];
            return true;
        }
        if(equals(changed, temp, len))   flag = true;
    }
    return false;
}

int main(int argc, char const *argv[])
{
    int N;
    scanf("%d", &N);
    for(int i = 0; i<N; i++)
    {
        scanf("%d", &origin[i]);
    }
    for(int i = 0; i<N; i++)
    {
        scanf("%d", &changed[i]);
    }
    if(insertSort(origin, N))
    {
        printf("Insertion Sort\n");
        printf("%d", output[0] );
        for(int i = 1; i<N; i++)    printf(" %d",output[i] );
    }
    else if(mergeSort(origin, N))
    {
        printf("Merge Sort\n");
        printf("%d", output[0] );
        for(int i = 1; i<N; i++)    printf(" %d",output[i] );
    }
    else
        printf("Error\n");
    return 0;
}

收获

Kubernetes CRD 系列(一):CRD 介绍 CR(Custom Resource)其实就是在 Kubernetes 中定义一个自己的资源类型,是一个具体的 “自定义 API 资源” 实例,为了能够让 Kubernetes 认识这个 CR,就需要让 Kubernetes 明白这个 CR 的宏观定义是什么,也就是需要创建所谓的 CRD(Custom Resource Definition)来表述。 可能这么说并不是太直观,换个方式表达一下,我们想要创建一个 Pod 的时候,那么会编写一个 YAML 配置,然后前两行一般会这么写: [root@l 阅读详情

相关推荐

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929

pat甲级什么水平_PAT甲级带我通关编程与数据结构新手村

写在前面半年前我努力啃下了《算法第4版》,作为非科班的学生,刚学完数据结构与算法,我同样也在思考如何巩固提高。最终我选择了适合自己的几个方式,PAT甲级正是其中之一。大概讲一下PAT甲级是啥。PAT(Programming Ability Test)是浙江大学组织的编程考试,分为乙级、甲级和顶级。浙大计算机学院和软件学院可用甲级、顶级成绩作为考研机试成绩,部分企业可为成绩优异者免除招聘笔试,具体情...

weixin_39740283的博客 4554

当Flowable遇上AI:智能流程决策的未来探索

本文探讨了Flowable工作流引擎与AI技术的融合,构建智能流程决策系统的前沿实践。通过动态流程控制、机器学习优化表达式、自然语言生成规则等创新方法,显著提升业务流程的自动化水平和决策效率。重点解析了AI如何赋能Flowable核心引擎,实现从静态规则到动态智能的跨越式发展。

weixin_29271053的博客 392

PAT(Programming Ability Test)等级,可以基本对应程序能力

PAT(Programming Ability Test)等级,可以基本对应程序能力

无尽星空--帝王铠 1万+

相控阵雷达“相控”原理---多张动画示意图完美解释

很容易就能发现,相控阵雷达的天线由无数个小单元天线组成,这些小单元天线叫做“阵元”,对于有源相控阵雷达来说,每一个阵元都是独立控制的,它们既能独立发射雷达波,也能接收雷达波的回波信号。相控阵雷达可以在1秒内关机,1秒内开机,好处是,当军舰遇到依靠雷达信号进行引导的“反雷达导弹”时,可以迅速地把朝向来袭导弹方向的雷达关机,同时,其他方向的雷达保持开启。在过去,军舰上安装有不同种类的雷达,体积庞大、重不说,另一个麻烦是干扰,常常是,一种雷达工作时,另一种雷达就会受到干扰,严重的甚至不能同时工作。

muyangjun的专栏 1万+

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~

emmmmmmm 总算是考了个满分,不用以后再交PAT考场一日游入场费了T ^T 第一次在去年秋天,被第一题狼人杀给干掉了〒▽〒,最后得了81分,第二次就是今年春季,侥幸满分通过了= = 为了总结自己踩过的坑,给后面要考的同学们提供一些微薄的帮助,遂作此文。 考场经验 一. 注意,考试的运行时的黑框,是不能使用Crtl+V进行粘贴的,但这不代表考试不能进行复制粘贴,PAT考试系统里的代码...

漫浸天空的雨色的备忘录~ 10万+

SimpleFOC STM32实战:基于F103与HAL库,剖析速度环与电流环的协同控制

本文详细介绍了基于STM32F103与HAL库的SimpleFOC实战应用,重点剖析速度闭环控制与电流环的协同工作原理。通过开发环境搭建、参数调试技巧及性能优化方案,帮助开发者高效实现无刷电机精准控制,适用于机器人、无人机等高精度应用场景。

weixin_29170327的博客 476

PAT 考试是什么?

文章目录一、宗旨二、考试方式三、成绩和证书四、大纲要求五、今年的秋季考试注意事项 一、宗旨 浙江大学计算机程序设计能力考试(Programming Ability Test,简称PAT)是由浙江大学计算机科学与技术学院组织的统一考试,旨在培养和展现学生分析问题、解决问题和计算机程序设计的能力,科学评价计算机程序设计人才,并为企业选拔人才提供参考标准。 二、考试方式 由浙江大学计算机科学与技术学院考...

南淮北安的博客 6万+

【制作100个unity游戏之22】3DRPG游戏开发01——项目的设置和导入及渲染管线的安装修复

如果你现在存在一些疑惑unity导入素材为什么是粉紫色的?表示他没有适配我们的URP通用渲染管线,要如何适配呢?素材渲染错误丢失要如何解决?如果你有上面3个任意的问题,那这篇文章同样适合你,我将手把手教你如何安装修复渲染管线,看完你就了解了!在Unity中,他们都是渲染管线,它们的主要区别在于性能和功能。LWRP是早期版本的URP,它专门为移动设备和低端PC设计,旨在提供更高的性能。它使用基于顶点的光照和简化的后处理效果,可以在更低的硬件要求下运行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2428

SAP 销售订单BOM使用场景简介

通常在MTO的生产场景中,我们会根据已创建的SO去展开BOM去驱动生产,如果我们生产地产品BOM是通用性的通常我们用标准BOM的方式就可以实现,但是实际在生产过程中往往不会这样,不同的客户对某些物料的规格就不相同,就会涉及产生不同的BOM,但是该客户的产品又不存在通用性,这个时候就会引入概念就是销售订单BOM,先有销售订单然后根据销售订单+行项目创建BOM。销售BOM:根据销售订单号+行项目号创建的BOM,是根据特定的销售订单或者可以理解为特定的客户创建的BOM。

我小时候很黑的博客 4219

[PAT Basic Level] 1035. 插入与归并

题目分析: 这道题目,花了不少时间,犯了一个很窒息也让我查了很久很才发现的错误——把Insertion Sort输出成了Insert Sort。。。写这道题的分析时,身心俱疲。中途因为查不出错,借鉴了网上的一些代码并相应地修改了,所以和网上很多其他人代码比较相似。 这道题目从0~6一共7个测点,0、2、4是插入排序测点,其余是归并排序测点(看看我的错误想必就能明白为何我知道这些测点的情况了。。) ...

weixin_44452361的博客 224

C#上位机性能优化全攻略:彻底解决界面卡顿+多线程死锁+PLC数据延迟,产线实测稳定运行2年

一开始我们用的是网上找的零散优化代码,根本满足不了要求,后来花了2个月的时间,把之前27条产线的代码整理、重构、优化,做了一套这套方案上线后,连续稳定运行2年零3个月:界面响应时间稳定在50ms以内,多线程死锁率持续为0,PLC数据延迟稳定在150ms以内,系统可用率≥99.99%,帮客户一年省下了超过480万的停线损失、罚款损失和人工成本,客户第二年就把剩下的22条产线也全部交给我们做了,还介绍了3家同行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 293

PAT (Basic Level) Practice (中文)1035 插入与归并 (25 分)

1035插入与归并(25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和...

菱形继承 321

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PAT (Basic Level) Practice

题号 问题 C/C++ 相关知识点 1001 害死人不偿命的(3n+1)猜想 参考题解 模拟 1002 写出这个数  参考题解 字符串处理 1003 我要通过! 参考题解 数学题 1004 成绩排名  参考题解 查找元素 1005 继续(3n+1)猜想  参考题解 Has...

追風少年 767

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【PAT乙级题库】全套总结

我将难度分为三个等级: 简单 中等 难 简单的做一次足以,做再多遍也无任何的意义。 中等的可以多刷几遍 难的多刷几遍 目录1001 害死人不偿命的(3n+1)猜想【简单 做一次足以】1002 写出这个数 (20 分)【简单 做一次足以】1003 我要通过! (20 分)【难 建议多刷】 1001 害死人不偿命的(3n+1)猜想【简单 做一次足以】 1001 害死人不偿命的(3n+1)猜想 1002 写出这个数 (20 分)【简单 做一次足以】 1002 写出这个数 1003 我要通过! (20 分).

辉小歌的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PAT 乙级题解目录—1001-1095

1001 害死人不偿命的(3n+1)猜想 1002 写出这个数

Arthur的博客 756

PAT basic 练习题 C++ 代码合集及测试点错误解决方法

1001 害死人不偿命的(3n+1)猜想 (15分) 1002 写出这个数 (20分)

雨渊的博客 2455

PAT乙级(考研上机复习 重点题&易错题)

PAT乙级 重点题&易错题

weixin_52355727的博客 1657

PAT刷题经验(1),看此一遍文章就够了!

PAT刷题经验,详细介绍了什么是PAT,刷PAT有什么用,怎么学习刷算法,推荐的书籍,还有一些刷题技巧~

青春无问西东 岁月自成芳华 2万+

如何刷pat(想要在pat甲级拿80到90分)

遇到不会的题或者交N次都过不了某个测试点,先自己尝试着解决,很长时间没有想法(比如一个小时)后,再去网上搜题解。并且不要直接看代码,看下人家的思路。自己再来做,再做不来就去看代码,也不要直接把代码copy下来改了就交,最好看懂代码自己写。我个人觉得这样才能把别人的东西变成自己的。(MOOC数据结构的题有问题的话,善用讨论区,姥姥都会很耐心地提供帮助 另外找个大腿抱还是挺重要的(比你强就行),N天

wuhuagu_wuhuaguo的博客 3万+

个人关于PAT的认识心得和体会

前言 今天考了18年9月份的PAT甲级考试,虽然成绩不理想,但是也给一个阶段划上了句号。有一些心得和反思,写给自己,也希望能帮助他人。     正确认识PAT 首先正确的认识PAT很关键: 如果你是考研的同学,如果成绩优异可以替换掉浙大的计院和软院的研究生复试的机试部分(据说其他的学校也有,这一点我不太清楚,可以针对具体院校咨询一下)。 如果你是工作的同学,成绩特别优异的话还是比较有...

CrazyOnes的博客 1万+

PAT 甲级 汇总

终于把PAT甲级的题目都补齐啦~~~撒花~~~ 臭不要脸的给自己弄了个汇总 23333。 1001. A+B Format解析 http://blog.csdn.net/sheepywyy/article/details/53995044 1002. A+B for Polynomials 解析 http://blog.csdn.net/sheepywyy/a

sheepyWYY的博客 5218

PAT甲级分类【树】

1147 Heaps (30分) 完全二叉树和堆的性质 知识点: 大顶堆:子节点比父节点小,根节点最大 postorder 后序遍历 levelorder 层序遍历 //1147 #include<bits/stdc++.h> using namespace std; int m,n; vector <int> v; void postorder(int index){ if(index>n)return; postorder(index*2); postorder(in

且行的小博客 446

PAT学习 Basic级别

#PAT刷题笔记(1)写在前面C语言的接受数据格式之字符串(1009)先来看一下题目怎么做呢 #PAT刷题笔记(1) 写在前面 一个菜鸡开始刷PAT了,拿了乙级题刷,用的是C语言,感觉很多基本的语法在这里还要熟悉,包括接受和输出数据的格式和相关代码,慢慢学习吧,(虽说不想当个纯码农,但是也许还是得多多少少学些计算机的东西,练练码功了。) C语言的接受数据格式之字符串(1009) 之前做题目做出的都是键入数字,用scanf循环输入即可,现在遇到一个输入为字符串的题目,得从字符串读入开始了。 先来看一下题目 1

wbywby11的博客 941

PAT乙级考试经验分享

主要介绍了PAT乙级考试从报名到准备到考试中的小技巧等相关经验

戴璞微的学习之路 1万+
上一篇: PAT乙级.1030. 完美数列(25)
下一篇: PAT乙级.1040. 有几个PAT(25)
R11happy
博客等级 码龄11年 6粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值