最大元和最小元(直接求解法和分治法)
给定一个数组,求数组中的最大元和最小元(即最大值和最小值)
法1:直接求解
#include<iostream>
using namespace std;int main(){int n,a[100];cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int max=a[0],min=a[0];for(int i=1;i<n;i++){if(a[i]<min)min=a[i];if(a[i]>max)max=a[i];}cout<<max<<" "<<min;
}
法二:分治法
将数组一分为二,先求解左边的最大元和最小元,再求解右边的最大元和最小元,然后左边的最大元,右边的最大元,取最大即为整体的最大元;最小元同理。
/*
法2:分治法
*/
void max_min(int a[],int l,int r,int &max,int &min){int n=r-l+1;int p=n/2;if(n==1){//只有一个元素 max=a[l];min=a[l];}else if(n==2){//只有两个元素 max=a[l]>a[r]?a[l]:a[r];min=a[l]<a[r]?a[l]:a[r];}else{//有大于两个元素时 int lmax,lmin,rmax,rmin;//左边最大元、最小元、右边最大元、最小元 max_min(a,l,p,lmax,lmin);//求左边的最大元和最小元 max_min(a,p+1,r,rmax,rmin);//求右边的最大元和最小元 max=lmax>rmax?lmax:rmax;min=lmin<rmin?lmin:rmin;}}
//测试
int main(){int n,a[100];cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int max,min;max_min(a,0,n-1,max,min);cout<<max<<" "<<min;return 0;}
最大元和最小元(直接求解法和分治法)相关推荐
- 最近点对问题(蛮力法和分治法)
最近点对问题(蛮力法和分治法) 1.一维空间 1.1蛮力法 1.2分治法 2.二维空间 代码参考链接: http://t.csdn.cn/flREB 1.一维空间 1.1蛮力法 代码: import ...
- 二分法和分治法概念区别--记录
1.二分法和分治法的概念区别: 二分搜索每次都要舍弃一半,从留下的一半中寻找目标:而分治法把一个大问题分成两个或多个小问题,递归地求这些小问题的解,最后再把它们小心谨慎的合并起来,并且要仔细考虑合并时 ...
- C语言实现最大字段和(动态规划法和分治法)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.动态规划法 二.分治法 三.程序总代码 总结 前言 本次将对最大字段和使用C语言实现的两种方法实现,动态规划法和分 ...
- 主元素问题(蒙特卡洛法和分治法)
主元素问题描述 设T为一个有n个元素的数组,当T中某个元素x的个数大于n/2时,称x为T的主元素. 蒙特卡洛算法简介 蒙特卡洛算法(Monte Carlo),是一种不确定性化算法,并无法保证一定能够得 ...
- Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)
1.问题描述 写一个高效的算法,从一个 m×n m\times n的整数矩阵中查找出给定的值,矩阵具有如下特点: 每一行从左到右递增. 每一列从上到下递增. 2. 方法与思路 2.1 二分查找法 根据 ...
- 算法设计与分析 实验二 分治法求解最近点对问题
分治法求解最近点对问题 一.实验目的与要求 1.实验基本要求 2.实验亮点 二.实验内容与方法 三.实验步骤与过程 (一)一些准备工作 1.实验流程 2.数据生成与去除重复点 (二)暴力穷举法 1.算 ...
- 【算法设计与分析】-- 分治法
1.分治法的基本思想 分治法的基本思想是将一个规模为n的问题分解为k个规模为较小的子问题,这些子问题互相独立且与原问题相同,递归地求解这些子问题,然后利用子问题的解合并出原问题的解. 2.分治算法的设 ...
- 深大算法设计与分析实验二——分治法求最近点对问题
源代码: 深大算法设计与分析实验二--分治法求最近点对问题代码-C/C++文档类资源-CSDN下载 目录 实验问题 一.实验目的: 二.内容: 三.算法思想提示 产生不重复的随机点算法: 蛮力算法: ...
- 分治法基本思想(汉诺塔问题 Tower of Hanoi)
文章目录 前言 基本思想 适用的问题 求解步骤 分治法要点 时间复杂性分析 举例-汉罗塔问题(Tower of Hanoi) 问题描述 解决步骤 java代码 前言 分治法来源于孙子兵法谋攻篇中写道- ...
最新文章
- 密码学摘要算法之MD5
- 【 C 】预处理指令
- java伪装成mysql从节点_开发时java项目启动时需要连mysql等,有没有什么工具可以mock连接使得启动顺利不报错?...
- 大数据WEB阶段(二十)更新丢失
- Android获取设备已安装的应用
- CSS盒子模型之详解
- java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题
- 拓端tecdat:R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据
- 应用程序框架实战四:你需要应用程序框架吗
- 64位电脑c语言程序下载,vc2010 x64位
- 联想云计算机终端,联想云桌面
- MATLAB简单入门
- ps把一张图里面的文字去掉而不改变字后面的背景;把同一个颜色的改为别的颜色
- Python 第六章 面向对象编程(MD模式)
- ps中怎么把人物的腿给p长
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- MD5生成与校验(Linux/UNIX/Windows)
- 虚拟服务器欠费是什么原因,辟谣:Elysium解释近期服务器崩溃的原因 非服务器欠费 而是闪电...
- 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...
- SeedLab10: Linux Firewall Exploration Lab