Java实现利用分治法找到数组中的最大最小元素
Java实现利用分治法找到数组中的最大最小元素
基本思路:
不断的寻找数组的左子数组和右子数组,当左子数组和右子数组的长度为1时,最大最小元素均为本身,当左子数组和右子数组的长度为2时,直接进行一次比较分别得出两个子数组的最大最小元素,然后将子问题合并,在两个子数组中寻找到更大的元素作为大元素,更小的元素作为小元素,递归完成后,即可获得正确结果。
Java代码如下:
public class FindMaxAndMin {public static void main(String[] args) {int[] ans = {6, 8, 4, 4, 6, 36, 673, 13, 6, 7, 3, 4, 6, 8, 3, 7, 5, 7, 9, 5};int[] res = find(ans, 0, ans.length - 1);System.out.println("最小元素为"+res[0]);System.out.println("最大元素为"+res[1]);}private static int[] find(int[] ans, int left, int right) {int mid = (left + right) / 2;//当left == right 时,最大最小元素均为ans[left]if (left == right) {int[] res = new int[2];res[0] = ans[left];res[1] = ans[right];return res;}//当left + 1 == right时,比较得出最大最小元素if (right - left == 1) {int[] res = new int[2];res[0] = Math.min(ans[left], ans[right]);res[1] = Math.max(ans[left], ans[right]);return res;}//分别找出左子数组和右子数组的最大最小元素int[] Lres = find(ans, left, mid);int[] Rres = find(ans, mid + 1, right);//将子问题合并,找出两个子数组中的最小元素和最大元素int[] res = merge(ans, Lres, Rres, left, mid, right);return res;}private static int[] merge(int[] ans, int[] Lres, int[] Rres, int mid, int left, int right) {int[] res = new int[2];res[0] = Math.min(Lres[0], Rres[0]);res[1] = Math.max(Lres[1], Rres[1]);return res;}
}
运行结果如下:
Java实现利用分治法找到数组中的最大最小元素相关推荐
- 分治法求数组中的最大最小元素
#include<iostream> using namespace std; //分而治之法求数组中的最大最小元素 void maxmin(int i,int j,int A[],int ...
- php 输出数组第一个元素,怎么在php中利用reset() 函数输出数组中的第一个元素
怎么在php中利用reset() 函数输出数组中的第一个元素 发布时间:2021-01-16 09:37:11 来源:亿速云 阅读:66 作者:Leah 本篇文章给大家分享的是有关怎么在php中利用r ...
- 查找数组中第二个最小元素
查找数组中最小的两个元素的过程: 第一种情况: 如果数组的数据是偶数个N: 1.首先假设最小值和次最小值是最前面的两个数 min1=p[0]; min2=p[1]; 2.进行循环,进入下一组的两个数中 ...
- maxN - 返回数组中N个最大元素 minN - 返回数组中N个最小元素
从提供的数组中返回 n 个最小元素.如果 n 大于或等于提供的数组长度,则返回原数组(按降序排列). 结合使用Array.sort() 与展开操作符(...) ,创建一个数组的浅克隆,并按降序排列. ...
- Python算法——分治法查找数组中元素最小最大值
要求: 给定数组a1,a2,a3,...an,找出数组中最大值和最小值.(数组中两两各不相同) 分析: 算法思想类似于上图,将数组两两分为一组,如果数组元素奇数个,就把最后一个元素单独分为一组,然后分 ...
- leetcode1170-比较字符串最小字母出现频次(Map集合存储数组中每个字符串最小元素对应出现频次)
目录 1. 题目: 2.分析: 3.思路: 4.代码实现: 1. 题目: 2.分析: 分析题目意思,queries中每个词都需要和words中全部单词比较,每个词的出现频次最小的单词的次数和words ...
- 利用分治法求两个有序数组的中位数
也是看了一篇很好的博客,思路很清晰,只是有些地方感觉博主没有详细解释,后来理解了,做了一个小总结.原博客链接:点击打开链接 题目还是昨天的那道题目: 给定两个大小为 m 和 n 的有序数组 nums1 ...
- 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)
代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g 提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...
- 分治法查找数组元素的最大值和最小值(python实现)
实验内容 给定任意几组数据,利用分治法的思想,找出数组中的最大值和最小值并输出 实验原理 利用分治法,将一个数组元素大于 2 的数组分成两个子数组,然后对每一个子数组递归调用,直到最小的子数组的元素个 ...
最新文章
- HALCON选择标定板文件
- 《Ajax实战》三部曲之“王者归来”
- mysql五大引擎之间的区别和优劣之分
- wordpress怎么打开php网站,wordpress怎么做网站
- c语言程序的命令行输入,C程序获取命令行参数
- find server/ -type d|xargs -I {} echo mkdir /root/{}
- typedefnbsp;struct与struct的区别
- jquery按名称选择_jQuery按名称选择
- C++ python 找标定圆点
- python修改pdf内容_用Python把PDF文件转换成Word文档
- 周立功linux内核,极速搭建周立功IMX287A ARM Linux开发环境
- Katana程序集列表
- linux 对战平台,【浩方对战平台和搜狗输入法 For Linux哪个好用】浩方对战平台和搜狗输入法 For Linux对比-ZOL下载...
- exception1:unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案
- 冒泡排序和快速排序的效率比较
- 二分查找的左右逼近法
- AB-PLC之间通讯
- 单个正态总体均值的置信区间
- 我用diffusion把姐妹cos成了灭霸的模样
- 京东方和TCL为争夺全球液晶面板老大位置,展开并购竞赛
热门文章
- 项目管理系统软件有哪些?这10款最好用的项目管理软件值得推荐
- 如何在清华镜像上面下载anaconda
- 基于Java+SpringBoot+Mybatis+Vue+ElementUi的幼儿园管理系统
- Enterprise Library深入解析与灵活应用(4):创建一个自定义Exception Handler改变ELAB的异常处理机制...
- PopupWindow实现屏幕底部弹出
- 安卓8.1系统多次点击版本号不显示开发者选项
- 有关sh脚本,优化svn管理android事务
- 初试TinyWebServer项目所遇到的问题
- 人力资源简单工作流程管理系统
- 一道面试题:火车运煤问题