1089 Insert or Merge (插入排序,相邻归并排序,附模拟实现)

注意点1:判断插入排序不能从头开始判断是否为目标数组,

比如:初始为1 2 3 4 3,目标数组也为1 2 3 4 3,则如果是从头开始推的,则下一步会变成1 2 3 4 3,而下一步应该是 1 2 3 3 4。所以我们应该从第一个无序的位置开始排序。也就是从最后一个3开始排序判断目标数组。

注意点2:题目中的归并排序为相邻归并(递推归并),而非中分归并(递归归并)。

技巧点:排序可以用sort减少思考步骤。

常规模拟版

#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],c[110];
int n;
bool check(){for(int i=0;i<n;i++){if(c[i]!=b[i])return 0;}return 1;
}
void print(){for(int i=0;i<n;i++){cout<<c[i];if(i!=n-1)cout<<' ';}
}
bool insert(){bool flag=0;for(int i=1;i<n;i++){//找到第一个无序的位置排序。if(c[i-1]<=c[i])continue;if(check())flag=1;int pos=i;int temp=c[i];while(pos>0&&c[pos-1]>temp){c[pos]=c[pos-1];pos--;}c[pos]=temp;if(flag)return 1;}return 0;
}
void merge(){bool flag=0;for(int len=2;len<=n;len*=2){if(check())flag=1;for(int l=0;l<n;l+=len){int r=min(n-1,l+len-1);int mid=l+len/2-1;int i=l,j=mid+1;vector<int>temp;while(i<=mid&&j<=r){if(c[i]<=c[j])temp.push_back(c[i++]);else temp.push_back(c[j++]);}while(i<=mid)temp.push_back(c[i++]);while(j<=r)temp.push_back(c[j++]);for(i=l,j=0;i<=r;i++,j++){c[i]=temp[j];}}if(flag)return ;}
}
int main(){cin>>n;for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)cin>>b[i];memcpy(c,a,sizeof a);if(insert()){cout<<"Insertion Sort"<<endl;print();}else {memcpy(c,a,sizeof a);merge();cout<<"Merge Sort"<<endl;print();}
}

sort版 

#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],c[110];
int n;
bool check(){for(int i=0;i<n;i++){if(c[i]!=b[i])return 0;}return 1;
}
void print(){for(int i=0;i<n;i++){cout<<c[i];if(i!=n-1)cout<<' ';}
}
bool insert(){bool flag=0;for(int i=1;i<n;i++){//找到第一个无序的位置排序。if(c[i-1]<=c[i])continue;if(check())flag=1;sort(c,c+i+1);if(flag)return 1;}return 0;
}
void merge(){bool flag=0;for(int len=2;len<=n;len*=2){if(check())flag=1;for(int i=0;i<n;i+=len){int j=min(n,i+len);sort(c+i,c+j);}if(flag)return ;}
}
int main(){cin>>n;for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)cin>>b[i];memcpy(c,a,sizeof a);if(insert()){cout<<"Insertion Sort"<<endl;print();}else {memcpy(c,a,sizeof a);merge();cout<<"Merge Sort"<<endl;print();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 setup语法糖,常用的几个:defineProps、defineEmits、defineExpose、

vue3和vue2组件之间传参的不同 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。 <script setup> 中的代码会在每次组件实例被创建的时候执行。 任何在 <script setup> 声明的顶层的绑定 (包括变量&#xff0c;函数声明&#xff0…

卓越进行时 | 赛宁联合国家一流网络安全学院探索校企合作新模式

为进一步探索网络安全教育技术产业融合发展的新机制新模式&#xff0c;全方位培养适应行业企业需求的复合型、创新型高素质网络安全人才。11月28日&#xff0c;南京赛宁信息技术有限公司&#xff08;赛宁网安&#xff09;与东南大学以优化产教融合发展原则&#xff0c;决定加强…

C++设计模式——Bridge模式(下)

在上篇 《C设计模式——Bridge模式&#xff08;上&#xff09;》中我们对于桥接模式做了一些介绍。介于桥接模式在实际项目开发中使用广泛&#xff0c;而且也是面试中常问常新的话题。在本篇&#xff0c;我们专注bridge模式在具体的项目开发中的应用&#xff0c;举几个例子来说…

服务器修复

服务器修复 主要服务器漏洞展示未禁用sync、shutdown、halt默认账户。未创建系统管理员、审计管理员、安全管理员账户设置系统管理员设置安全管理员 设置审计管理员配置PASS_MAX_DAYS 99999、PASS_MIN_LEN 5未配置TMOUT值配置HISTSIZE0未配置登录失败/密码复杂度策略umask值022…

2021年2月18日 Go生态洞察:Go 1.16中的新模块变化

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

数字时代的表演艺术:TikTok如何重新定义舞台

在数字时代的潮流中&#xff0c;TikTok崭露头角&#xff0c;重新定义了表演艺术的舞台。这款短视频应用不仅改变了用户与内容的互动方式&#xff0c;也为艺术家和创作者提供了全新的表达平台。本文将深入探讨TikTok如何在数字时代重新定义舞台&#xff0c;以及它对表演艺术的深…

基于FPGA的五子棋游戏设计

基于FPGA的五子棋游戏设计 本文基于FPGA设计五子棋游戏&#xff0c;使用按键输入&#xff0c;使用VGA接口输出。五子棋的棋具与围棋相同&#xff0c;棋子分为黑白两色&#xff0c;棋盘为1010&#xff0c;棋子放置于棋盘线交叉点上。两人对局&#xff0c;各执一色&#xff0c;轮…

【IEEE出版】2024年第四届消费电子与计算机工程国际学术会议(ICCECE 2024)

2024年第四届消费电子与计算机工程国际学术会议&#xff08;ICCECE 2024&#xff09; 2024 4th International Conference on Consumer Electronics and Computer Engineering 进入21世纪以来&#xff0c;计算机技术的高速发展带来了消费电子产品的快速更迭。在技术迅速发展历…

关于免费SSL证书

JoySSL是一家提供免费SSL证书的服务商&#xff0c;它的免费SSL证书不仅包括单域名&#xff0c;还包括多域名和通配符的免费证书。这意味着&#xff0c;无论您是只有一个网站的个人用户&#xff0c;还是拥有多个子域名的企业用户&#xff0c;都可以在JoySSL找到适合您的免费SSL证…

\n\r:解析java中的\r、\n、\r\n、\n\r的区别

1 \r 1.1 内容 回车符,将光标定义到当前行行首 1.2 在idea中测试 1.2.1 表现形式 在\r后有新内容时,会先删除之前以前存在过的文本,即只打印\r后面的内容 1.2.2 示例代码 package Work; public class Test05 { public static void main(String[] args) { System.…

Mysql七种高阶用法,让你少走弯路

首先先让我们创建表,SQL如下 CREATE TABLE moives (id int(11) NOT NULL AUTO_INCREMENT,movie_name varchar(200) COLLATE utf8mb4_bin DEFAULT NULL,actor_name varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,price decimal(10,0) DEFAULT NULL,release_date date DEFAULT …

【GEO-AI】SAM-Geo库(segment-geospatial)入门教程

今年4月份&#xff0c;Meta公布了它图形分割模型Segment-Anything&#xff0c;简称SAM。当时就想着这个东西用在遥感影像分割上应该效果不错&#xff0c;奈何自己能力有限&#xff0c;没有办法上手实践。偶然间看到有介绍SAM-Geo工具包的文章&#xff0c;决定研究一番&#xff…

Vue中使用正则表达式进行文本匹配和处理的方法

1. 正则表达式基础 正则表达式是一种用来匹配字符串的模式。它由普通字符&#xff08;例如字符 a 到 z&#xff09;和特殊字符&#xff08;称为"元字符"&#xff09;组成。以下是一些基本的正则表达式示例&#xff1a; 匹配邮箱的正则表达式&#xff1a; /^[\w-](\…

windows环境下载安装Nginx并配置防火墙

1、下载Nginx Nginx官网 下载稳定版 2、下载之后&#xff0c;解压 3、启动Nginx&#xff0c;命令&#xff1a;start nginx 最小化该窗口 主要&#xff0c;不要关闭&#xff0c;如果关闭&#xff0c;表示nginx服务关闭了 4、测试是否启动成功 在浏览器中输入http://localhos…

2021年09月 Scratch图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 程序中要使用不确定的数值,这时要用到的是?( ) A、图章 B、变量 C、广播 D、随机数 答案:D 第2题 执行下列程序后,角色会说?( ) A、3 B、6 C、10 D、15 答案:D 第3题…

广州华锐视点:基于VR元宇宙技术开展法律法规常识在线教学,打破地域和时间限制

随着科技的飞速发展&#xff0c;人类社会正逐渐迈向一个全新的时代——元宇宙。元宇宙是一个虚拟的、数字化的世界&#xff0c;它将现实世界与数字世界紧密相连&#xff0c;为人们提供了一个全新的交流、学习和娱乐平台。在这个充满无限可能的元宇宙中&#xff0c;法律知识同样…

关于MongoDB

MongoDB介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。它支持的数据结构非常松散&#xff0c;因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大&#xff0c;其…

Panorama SCADA平台助力智能建筑管理,掌控未来建筑!

来源&#xff1a;宏集科技 工业物联网 宏集方案 Panorama SCADA平台助力智能建筑管理&#xff0c;掌控未来建筑&#xff01; 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 前言 在现代智能建筑管理中&#xff0c;随着设施管理&#xff08;FM&#xff09;、建筑管理…

数据结构与算法--特殊的完全二叉树--堆,堆排序,利用堆解决topk的问题

目录 前言 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树&#xff1a; 2.3 特殊的二叉树&#xff1a; 2.4 二叉树的性质 …

YOLOv7独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…