技术标签: 数据结构
以下五种解法可以寻找到数组中的最大值和最小值;
1)问题分解法。
把本题看做两个独立的问题,而非一个问题,所以,每次分别找出最小值和最大值即可,此时,一共需要遍历两次数组,比较次数为2N次;(N表示数组的长度)
2)取单元素法。
维持两个变量min和max,min标记为最小值,max标记为最大值,每次取出一个元素,先与已找到的最小值比较,再与已找到的最大值比较,此种方法只需要遍历一次数组即可;
3)取双元素法。
维持两个变量min和max,min标记为最小值,max标记为最大值,每次比较相邻的两个数,较大者与max比较,较小者与min比较,通过比较找出最大值和最小值。此种方法的比较次数为1.5N次。
示例代码如下:【以下有BUG,自己找】
<pre name="code" class="java" style="background-color: rgb(255, 255, 255);"><span style="font-size:18px;">public class MaxMin {
static int Min;
static int Max;
public static void GetMaxAndMin(int arr[]){
Max=arr[0];
Min=arr[0];
int len=arr.length;
for</span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">(int i = 1; i < len-1; i+=2) {</span>
<pre name="code" class="java"><span style="font-size:18px;background-color: rgb(255, 255, 255);"> if(i+1>len){
if(arr[i]>Max)
Max=arr[i];
if(arr[i]<Min)
Min=arr[i];
}
if(arr[i]>arr[i+1]){
if(arr[i]>Max)
Max=arr[i];
if(arr[i+1]<Min)
Min=arr[i+1];
}
if(arr[i+1]<arr[i]){
if(arr[i+1]>Max)
Max=arr[i+1];
if(arr[i]<Min)
Min=arr[i];
}
}
}
public static void main(String[] args) {
int array[]={7,12,4,55,22,66,32,101,32};
GetMaxAndMin(array);
System.out.println("max="+Max);
System.out.println("min="+Min);
}
}</span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">
</span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">输出:max=101
min=4</span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">
</span>
<span style="font-size:18px;color:#3366ff;"><strong style="background-color: rgb(255, 255, 255);">4)数组元素移动位法</strong></span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);"> 将数组中相邻两个数分在一起,每次比较相邻的两个数,将较大的数交换至左边,较小值放在右边,对大者组扫描一次找出最大值,对小组遍历一次找出最小值,此种方法比较次数为1.5N—2N之间,但需要改变数组结构;</span>
<span style="font-size:18px;color:#3333ff;background-color: rgb(255, 255, 255);"><strong>5)分治法</strong></span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">将数组划分为两半,分别找出两边的最小值最大值,则最小值是两小之小者,最大者是两大之大者,比较次数为1.5N次。</span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">
</span>
<span style="font-size:18px;background-color: rgb(255, 255, 255);">
</span>
【题目描述】如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。【输入】 键盘输入B点的坐标(n,m)以及对方马的坐标(X,Y){不
函数使用(函数定义及调用方式、传参与返回参数、命名空间、装饰器)
基于遗传算法GA优化的BP神经网络预测和分类(含优化前对比)文章目录基于遗传算法GA优化的BP神经网络预测和分类(含优化前对比)1. BP神经网络预测原理简介2. 遗传算法GA优化BP神经网络原理3. GA-BP模型建立3.1 模型与数据介绍3.2 GA与BP参数设置3.3 遗传算法优化BP的设计4. 测试结果5. MATLAB代码与数据下载地址1. BP神经网络预测原理简介BP 神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。BP神经网络训练的主要思想:输
工具安装1. burpsuite下载pentestBox之后直接点击bin目录下burpsuite的jar包使用默认设置;浏览器这边firefox下载FoxyProxy插件设置代理127.0.0.12. dirhuntwin下打开cmd$pip install dirhunt3. Xshell下载安装连接服务器即可flag_1先dirhunt扫描隐藏的页面:(ps.di...
Buddy本地部署是Buddy系统的全功能版本,您可以将其安装在自己的基础架构上并在自定义所使用域名上运行。 设置非常简单——你只需要一台安装了Docker的服务器即可。前提条件CPU至少2核 内存至少8GB 硬盘空间至少30GB推荐配置并发执行 内存 CPU 4 16GB 4 10 32GB 8 20 64+GB 16 Buddy CLI当你安装本地部署时会自带安装Buddy CLI(命令行界面),通过Buddy CLI
项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base视频讲解地址https://space.bilibili.com/485524575/channel/detail?cid=945791、演示2、代码这里也是通过sql来查询的SELECT DISTINCT t1.ID_ AS taskId, t1.NAME_ AS taskName, t2.FIRST_ AS a
A记录A记录是用来创建到IP地址的记录。A记录设置技巧1、如果想创建不带www的记录,即ezloo.com,在主机记录中填写@或者留空,不同的注册商可能不一样。2、创建多个域名到同一个IP,比如给博客建了二级域名,可以使用*.blog.ezloo.com来指向一个IP,这样的话,不管是访问a.blog.ezloo.com还是b.blog.ezloo.com都能到同一个IP。...
在开发一个功能或者修复一个bug时,有时会commit多次代码,这时为了commit历史的完美,会想将多个commit合并为一个,想要实现这个目标,就需要用到 ,下面记录操作方法,留作笔记。
现有用户及用户订单的文件数据一、将数据导入数据库二、分析用户消费行为统计不同月份的下单人数统计三月份用户的回购率和复购率统计男女的消费频次是否有差异统计多次消费的用户,第一次和最后一次消费时间的间隔统计不同年龄段的用户消费金额是否有差异统计消费的top20%用户,贡献了多少额度一、将数据导入数据库1、建表订单明细表CREATE TABLE ORDERINFO ( ...
一、迭代和递归异同 递归(recursion) 迭代(iteration) 概念 常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。(A调用A) 重复反馈过程的活动,每一次迭代的结果会作为下一次迭代的初始值。(A重复调用B) 结构 递归是一个树结构,从字面可以其理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。 迭代是一个环结构,从初始状态开始,每次迭代
感谢大佬博客:https://www.cnblogs.com/zyf0163/https://blog.csdn.net/pengwill97预备知识:线段树如果不知道请看我的另一篇博文:https://blog.csdn.net/flymoyu/article/details/88745867整体描述:主席树又称函数式线段树或者可持久化线段树,顾名思义,也就是通过函数来实现的线段树...