C++分治思想

分治思想的定义

分治思想是C++中很重要的一个思想,它的主旨是“将大的问题化作小的问题,将小问题在化作更小的问题”。就是这样一个看起来十分简单的思想,却涵盖了许许多多的算法,如递归,递推,贪心等。

分治思想的其中一个方式就是我们耳熟能详的“二分法”,这个所谓的“二分法”主要用于搜索问题,当我们遇到一个可能无限长且有序(注意,一定要有序)的一维数组时,用寻常的遍历法显然不可能了,因为这样很容易超时,这时,我们就可以用到二分法了。二分法就是将一个一维数组平均分成两段,选取一个中间值,然后通过某条件判断选择其中一段,再重复以上操作,直到找到我们要找的数为止。

以“1、2、3、4、5、6、7、8、9、10”为例,我们要查找的数为7,先将数组分为“1、2、3、4、5”和“6、7、8、9、10”,选取5为中间值,发现7>5,所以选第二段,再将数组分为“6、7、8”和“9、10”选取8为中间值,发现7<8,所以选第一段,再将数组分为“6、7”和“8”,选取7为中间值,发现7=7,就找到了。

二分法相对普通遍历来说大大减少了循环次数,也就减少了时间复杂度,就更不容易超时。

二分法

输入:先输入一个数n,代表数组有几个数,再输入一行数,代表n个数字(中间用空格隔开),最后输入一个数m,代表要查找的数是几。

输出:输出为一个数,代表所要查找的数在数组中排行第几(因代码写法原因,输出值与实际值相差1),如未找到则输出-1。

输入复制

10

1 2 3 4 5 6 7 8 9 10

7

输出复制

6

#include<bits/stdc++.h>
using namespace std;
int func(int,int);
int a[1010]={0};
int n,m;
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}cin>>m;cout<<func(0,n-1);return 0;
}
int func(int s,int e)
{if(e-s<=1){if(a[s]==m){return s;}else if(a[e]==m){return e;}else{return -1;}}int mid=(s+e)/2;if(a[mid]==m){return mid;}else if(a[mid]>m){return func(s,mid);}else if(a[mid]<m){return func(mid+1,e);}
}

归并排序

题目描述:输入两个值(n,m),再分别输入两行数据(a[n],b[m]),将他们归并为一个数列,要求这个数列必须从小到大排列。输入:输入分四行,第一行为一个值n,代表第一行数据有几个。第二行为n个数据,代表第一组数据a。第三行为一个值m,代表第四行数据有几个。第四行为m个数据,代表第二组数据b。输入:输出为一行数据,代表数据a与数据b归并后的数据。

输入复制

5

1 3 5 5 8

3

2 6 9

输出复制

1 2 3 5 5 6 8 9

#include<bits/stdc++.h>
using namespace std;
int a[110]={0};
int b[110]={0};
int c[250]={0};
int n,m;
int lc=0;
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}cin>>m;for(int i=0;i<m;i++){cin>>b[i];}int i=0,j=0;while(i<n&&j<m){if(a[i]<=b[j])c[lc++]=a[i++];else c[lc++]=b[j++];}while(i<n)c[lc++]=a[i++];while(j<m)c[lc++]=b[j++];for(int k=0;k<lc;k++){cout<<c[k]<<" ";}return 0;
}

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

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

相关文章

红队/白帽必经之路(16)——如何用Metasploit 在边路进行信息刺探及爆破登录[既然是红队,那就对自己狠一点!!!]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二 ➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advan…

vue实现echarts饼图自动轮播

echarts官网&#xff1a;Examples - Apache ECharts echartsFn.ts 把echarts函数封装成一个文件 import * as echarts from "echarts";const seriesData [{"value": 12,"name": "过流报警"},{"value": 102,"name&qu…

C++之异常智能指针其他

C之异常&智能指针&其他 异常关于函数异常声明异常的优劣 智能指针auto_ptrunique_ptrshared_ptrweak_ptr定制删除器 智能指针的历史与boost库 特殊类单例模式饿汉和懒汉的优缺点 C四种类型转换CIO流结语 异常 try括起来的的代码块中可能有throw一个异常&#xff08;可…

混沌工程/混沌测试/云原生测试/云平台测试

背景 私有云/公有云/混合云等具有复杂&#xff0c;分布式&#xff0c;环境多样性等特点&#xff0c;许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程&#xff0c;建立对系统抵御生产环境中失控条件的能力以及信心&#xff0c;提高系统面对未知风险得能力。 …

Hive学习基本概念

基本概念 hive是什么&#xff1f; Facebook 开源&#xff0c;用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

数据分析流程中的Lambda架构,以及数据湖基于Hadoop、Spark的实现

文章目录 一、Lambda架构1、Lambda的三层架构2、简单解释&#xff1a;3、Lambda架构的优缺点 二、数据湖基于Hadoop、Spark的实现1、架构2、数据管理&#xff08;存储层的辅助功能&#xff09; 一、Lambda架构 1、Lambda的三层架构 Batch View&#xff08;批处理视图层&#…

算法笔记:力扣142.环形链表返回链表入口

该题目通俗来说就是需要返回节点的入口&#xff0c;这点与判断是否有环不同&#xff0c;有环是通过快慢指针的形式来判断&#xff0c;但当快慢指针相等的时候&#xff0c;此时的节点不一定是环的入口节点。所以这题需要注意。 关键API&#xff1a; map.putIfAbsent(key,value)…

医院管理系统

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计…

说说Elasticsearch查询语句如何提升权重?

大家好&#xff0c;我是锋哥。今天分享关于【说说Elasticsearch查询语句如何提升权重&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说说Elasticsearch查询语句如何提升权重&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…

【Spring Security框架解析】

文章目录 Spring-security介绍Spring-security认证授权流程认证流程Security流程认证过滤器实现获取UserDetail信息 配置Security Spring-security介绍 Spring Security是一个功能强大且高度可定制的Java安全框架&#xff0c;用于保护基于Spring的应用程序。它提供了全面的安全…

[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 给了两个链接但是都无法访问 这里我们直接抓包试一下 我们插入X-Forwarded-For:127.0.0.1 发现可以修改了右上角的IP地址&#xff0c;从而可以进行注入 {$smarty.version} 查看版本号 if标签执行PHP命令 {if phpinfo()}{/if} 查看协议 {if system(…

使用SpringBoot实现邮件发送(QQ邮箱为例)

使用SpringBoot实现邮件发送(QQ邮箱为例) 一、获取授权码 1.首先进入qq邮箱找到设置 2、账号栏目&#xff0c;找到POP3/SMTP服务 并开启服务 3、获取授权码 二、SpringBoot集成邮件发送 1.创建邮件发送服务类 package com.example.demo.service;import org.springframework…

hint: Updates were rejected because the tip of your current branch is behind!

问题 本地仓库往远段仓库推代码时候提示&#xff1a; error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…

基于BM1684的AI边缘服务器-模型转换,大模型一体机(二)

目标追踪 注&#xff1a;所有模型转换都是在docker环境中的 先进入docker 这里我们是要在docker环境里编译的&#xff0c;所以先进入docker :~/tpu-nntc# docker run -v $PWD/:/workspace -it sophgo/tpuc_dev:latest初始化环境 root2bb02a2e27d5:/workspace/tpu-nntc# s…

ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本)

ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) code review! 参考笔记 1.ROS基本框架1——编写简单的发布者和订阅者(C++和Python版本) 2.ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) 文章目录 ROS基本框架2——在ROS开发中创建并使用自定义…

实例讲解MATLAB绘图坐标轴标签旋转

在进行绘图时需要在图片上添加上做标轴的标签&#xff0c;但是当数据量比较多时&#xff0c;例如一天24小时的数据&#xff0c;这时把每个小时显示在左边轴的标签上&#xff0c;文字内容放不下&#xff0c;因此需要将坐标轴标签旋转一定的角度&#xff0c;这样可以更好在图形上…

Spark 内存管理机制

Spark 内存管理 堆内内存和堆外内存 作为一个 JVM 进程&#xff0c;Executor 的内存管理建立在 JVM(最小为六十四分之一&#xff0c;最大为四分之一)的内存管理之上&#xff0c;此外spark还引入了堆外内存&#xff08;不在JVM中的内存&#xff09;&#xff0c;在spark中是指不…

为什么爱用低秩矩阵

目录 为什么爱用低秩矩阵 一、定义与性质 二、区别与例子 为什么爱用低秩矩阵 我们更多地提及低秩分解而非满秩分解,主要是因为低秩分解在数据压缩、噪声去除、模型简化和特征提取等方面具有显著的优势。而满秩分解虽然能够保持数据的完整性,但在实际应用中的场景较为有限…

Dify+Docker

1. 获取代码 直接下载 &#xff08;1&#xff09;访问 langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, …

Android Studio的AI工具插件使用介绍

Android Studio的AI工具插件使用介绍 一、前言 Android Studio 的 AI 工具插件具有诸多重要作用&#xff0c;以下是一些常见的方面&#xff1a; 代码生成与自动补全 代码优化与重构 代码解读 学习与知识获取 智能搜索与资源推荐实际使用中可以添加注释&#xff0c;解读某段代…