PAT 1035 插入与归并

2023-09-22 14:42:10

PAT 1035 插入与归并

题目描述

在这里插入图片描述

思路讲解

分析:先将i指向中间序列中满足从左到右是从小到大顺序的最后一个下标,再将j指向从i+1开始,第一个不满足a[j] == b[j]的下标,如果j顺利到达了下标n,说明是插入排序,再下一次的序列是sort(a, a+i+2);否则说明是归并排序。归并排序就别考虑中间序列了,直接对原来的序列进行模拟归并时候的归并过程,i从0到n/k,每次一段段得sort(a + i * k, a + (i + 1) * k);最后别忘记还有最后剩余部分的sort(a + n / k * k, a + n);这样是一次归并的过程。直到有一次发现a的顺序和b的顺序相同,则再归并一次,然后退出循环~

注意:一开始第三个测试点一直不过,天真的我以为可以模拟一遍归并的过程然后在过程中判断下一步是什么。。然而真正的归并算法它是一个递归过程。。也就是先排左边一半,把左边的完全排列成正确的顺序之后,再排右边一半的。。而不是左右两边一起排列的。。后来改了自己的归并部分判断的代码就过了。。。。◕‿◕。

代码展示

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int n, a[100], b[100], i, j;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 0; i < n; i++)
        cin >> b[i];
    for (i = 0; i < n - 1 && b[i] <= b[i + 1]; i++);
    for (j = i + 1; a[j] == b[j] && j < n; j++);
    if (j == n) {
        cout << "Insertion Sort" << endl;
        sort(a, a + i + 2);
    } else {
        cout << "Merge Sort" << endl;
        int k = 1, flag = 1;
        while (flag) {
            flag = 0;
            for (i = 0; i < n; i++) {
                if (a[i] != b[i])
                    flag = 1;
            }
            k = k * 2;
            for (i = 0; i < n / k; i++)
                sort(a + i * k, a + (i + 1) * k);
            sort(a + n / k * k, a + n);
        }
    }
    for (j = 0; j < n; j++) {
        if (j != 0) printf(" ");
        printf("%d", a[j]);
    }
    return 0;
}
更多推荐

零基础学前端(五)HTML+CSS实战:模仿百度网站首页

1.该篇适用于从零基础学习前端的小白2.初学者不懂代码得含义也要坚持模仿逐行敲代码,以身体感悟带动头脑去理解新知识一、实战:将百度网站首页补全上一篇零基础学前端(三)重点讲解HTML-CSDN博客我们已经将顶部两侧内容已经写完。1.接下来我们的目标如下图:分析对应的标签已经写在下面图片(我将百度logo涂上马赛克,主要

看板系统如何异地电脑手机访问?主机内网ip端口映射域名外网访问

看板系统是一种可视化管理系统平台,如生产管理看板、项目管理看板、APP运营看板等将企业或工厂本地项目具体数据转换成图表模式,方便实时管理和汇总,有效提升工作效率和助力生产实践。单位内部服务器部署了看板管理系统,由于无公网IP原因,无法直接让手机访问,也无法让异地外网电脑查看。这时,我们可以利用快解析端口映射方法,一步将

【藏经阁一起读】(69)__《阿里云视频云产品手册2023版》

【藏经阁一起读】(69)__《阿里云视频云产品手册2023版》目录一、概述阿里云视频云全产品矩阵二、数字人视频制作以下是人工智能虚拟人物的一些优秀代表作品及其特点:阿里云视频云数字人视频制作产品优势▶高还原度的拟真效果▶场景化智能AI联动处理▶丰富的衍生制作能力▶灵活的应用方案阿里云视频云数字人视频制作产品能力▶数字人

前端录入音频并上传

目录纯js实现(有问题)使用插件`recorder-core`(没问题)纯js实现(有问题)上传音频文件时blob数据中size一直是0,导致上传之后音频不可播放(本地录制后本地是可以播放的)<template><div><buttonv-if="!isRecording"@click="startRecording"

计算机丢失mfc140u.dll怎么办,mfc140u.dll丢失的解决方法分享

随着科技的飞速发展,计算机已经成为了人们日常生活和工作中不可或缺的工具。然而,在使用计算机的过程中,用户可能会遇到各种问题,其中计算机丢失mfc140u.dll无法运行的问题就是一个比较常见的困扰。小编将从以下几个方面对这个问题进行详细的探讨。一、mfc140u.dll文件的作用Mfc140u.dll是Microsof

linux相关知识以及有关指令3

在linux的世界中我们首先要有万物皆文件的概念,那么在系统中有那么多的文件,我们该怎么区分呢?文章目录1.文件分类2.文件的权限1).拥有者和所属组以及other2).文件的权限3).粘滞位4).对于权限修改的拓展知识点a.修改权限b.修改拥有者所属组c.权限掩码1.文件分类在linux中文件大致分为以下几类:-:普

windows安装npm教程及生成DEMO

在使用之前,先类掌握3个东西,明白它们是用来干什么的:npm:nodejs下的包管理器。webpack:它主要用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。vue-cli:用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的

这个世界,永远靠实力说话

这个世界,永远靠实力说话。与其寄望于运气或机会的降临,还不如脚踏实地,努力提升自己。因为只有强者,才能在这个充满挑战和机遇的世界里谈笑风生,创造出属于自己的成功和辉煌。就比如峰民dyfm888给人取名改名,有时候,峰民愿意给从没见过面的福主改名。有人不禁会问:“那别人远在千里,如何信任你?面都没见到,又如何相信你,给你

冯诺依曼体系结构+操作系统

目录一、冯诺依曼体系结构(一)基本结构(二)举例二、操作系统(一)概念(二)设计OS的目的(三)定位(四)内存管理、驱动管理、进程管理和文件管理1.内存管理2.驱动管理3.进程管理4.文件管理三、整体结构1.操作系统——驱动程序——底层硬件2.systemcall——操作系统3.用户——用户操作接口一、冯诺依曼体系结构

主机安全技术

主机安全1、主机分类类Unix主机Unix:Solaris,AIXLiunx:Redhat,Centos,SUSE等Windows主机Windowsserver2012,server2008等特殊主机IBMiseris,大型机等等2、主机风险操作系统风险0day漏洞,操作系统漏洞,黑客可以利用漏洞控制服务器或者发动拒绝

echarts常用参数详解汇总(饼图,柱形图,折线图)持续更新中

常用配置:X/Y轴线的基础设置《通用》细微的差距只能去官网查看了,基本一致这里只是做了个汇总方便查看xAxis/yAxis:{show:false,//不显示坐标轴线、坐标轴刻度线和坐标轴上的文字axisTick:{----------------------------------------------------

热文推荐