寻找最大值最小值

news2024/11/21 2:36:40
  Problem

         Finding both the minimum and maximum in an array of integers A[1..n] and assume for simplicity that n is a power of 2

 A straightforward algorithm

  1. x←A[1]; y←A[1]

  2. for i←2 to n

  3.   if A[i] < x then x←A[i]

  4.   if A[i] > y then y←A[i]

  5. end for

  6. return (x, y)

        Clearly, the number of element comparisons performed by this method is 2n−2

  1. 输入参数:该过程接受两个参数 lowhigh,表示数组 A 中待处理的范围。

  2. 基本情况处理:首先检查待处理范围是否只有一个元素。如果是,直接比较这两个元素的大小,返回一个包含最小值和最大值的元组。如果不是,继续进行后续处理。

  3. 递归分治:如果待处理范围不止一个元素,则计算中间位置 mid,并递归调用 minmax 过程来处理左右两个子范围 (low, mid)(mid + 1, high)

  4. 合并结果:得到子范围的最小值和最大值后,分别用变量 (x1, y1)(x2, y2) 来表示。然后,取这两个子范围的最小值 x 和最大值 y

    • 最小值 xx1x2 中的较小者。
    • 最大值 yy1y2 中的较大者。
  5. 返回结果:最后,以元组 (x, y) 的形式返回结果。

Time of  complexity

         Let C(n) denote the number of comparisons performed by the algorithm on an array of n elements, where n is a power of 2.  Note that the element comparisons are performed only in steps 2, 9, and 10. Also note that the number of comparisons performed by steps 7 and 8 as a result of the recursive calls is C(n/2). This gives rise to the following recurrence relation for the number of comparisons done by the algorithm:

A = [3, 8, 6, 2, 11, 5, 9, 4]

现在我们想要找出数组 A 中索引范围为 0 到 7 的最小值和最大值。

  1. 输入参数:调用 minmax(0, 7),表示在数组 A 中索引范围为 0 到 7 的子数组中查找最小值和最大值。

  2. 基本情况处理:由于索引范围不止一个元素,因此我们继续进行后续处理。

  3. 递归分治:我们计算中间位置 mid = (low + high) // 2 = (0 + 7) // 2 = 3,然后分别递归地调用 minmax(0, 3)minmax(4, 7)

  4. 左子范围处理:对于子范围 (0, 3),继续递归调用 minmax(0, 1)minmax(2, 3)

    • 对于子范围 (0, 1),由于只有一个元素,返回 (3, 3)
    • 对于子范围 (2, 3),由于只有一个元素,返回 (2, 6)
  5. 左子范围合并结果:左子范围的最小值是 3,最大值是 6

  6. 右子范围处理:对于子范围 (4, 7),继续递归调用 minmax(4, 5)minmax(6, 7)

    • 对于子范围 (4, 5),由于只有一个元素,返回 (5, 11)
    • 对于子范围 (6, 7),由于只有一个元素,返回 (9, 9)
  7. 右子范围合并结果:右子范围的最小值是 5,最大值是 11

  8. 合并结果:最后,合并左右子范围的结果。最小值为 min(3, 5) = 3,最大值为 max(6, 11) = 11

  9. 返回结果:返回最终的结果 (3, 11),表示数组 A 中索引范围为 0 到 7 的最小值是 3,最大值是 11

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

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

相关文章

Trapcode Particular---打造惊艳粒子效果

Trapcode Particular是Adobe After Effects中的一款强大3D粒子系统插件&#xff0c;其能够创造出丰富多样的自然特效&#xff0c;如烟雾、火焰和闪光&#xff0c;以及有机的和高科技风格的图形效果。Trapcode Particular功能丰富且特色鲜明&#xff0c;是一款为Adobe After Eff…

HTML作业2

作业1: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>table…

FPGA高端项目:解码索尼IMX390 MIPI相机转HDMI输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX390 及其配置MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 6、工程源码…

Charles工具安装,连接手机抓包

1. 下载Charles&#xff0c;[官网地址](https://www.charlesproxy.com/download/latest-release/) 根据自己使用的系统下载对应的安装包即可 注&#xff1a;charles双击打不开&#xff0c;且安装的jdk版本为jdk11的&#xff0c;建议参考以下处理方法&#xff1a;https://blog.…

【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明

本插件可以使用蓝图创建WebSocket服务器&#xff0c;并监听响应数据。 1. 节点说明 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 创建一个WebSocket服务器对象&#xff0c;并监听相应端口&#xff0c;连接地址为 ws://IP:PORT, 比如ws://192.168.1.5:9001…

系列学习前端之第 7 章:一文掌握 AJAX

1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff08;中文名&#xff1a;阿贾克斯&#xff09;&#xff0c;就是异步的 JS 和 XML。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方式。AJAX 可以在浏览器中向服务器发送异步请求…

GAMES Webinar 288-VR/AR专题-陆峰-混合现实中的多模态自然人机交互

感知交互增强智能 研究室虚拟现实技术与系统国家重点实验室&#xff0c;北京航空航天大学计算医学研究所&#xff0c;大数据精准医疗北京市高精尖创新中心 Perception & Hybrid Interaction (PHI) for Augmented & Affective Intelligence (A2I) We are working on v…

windows下powershell与linux下bash美化教程(使用starship)

starship美化教程 Win11 Powershell 安装 在命令行使用下面命令安装 # 安装starship winget install starship将以下内容添加到 Microsoft.PowerShell_profile.ps1&#xff0c;可以在 PowerShell 通过 $PROFILE 变量来查询文件的位置 Invoke-Expression (&starship i…

深入浅出(二)log4cplus库

log4cplus库 1. log4cplus简介1.1 log4cplus下载 2. log4cplus配置3. log4cplus配置文件 *.properties 配置 1. log4cplus简介 log4cplus是C编写的开源的日志系统。log4cplus具有线程安全、灵活、以及多粒度控制的特点&#xff0c;通过将日志划分优先级使其可以面向程序调试、…

代码随想录 图论

目录 797.所有可能得路径 200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量 130.被围绕的区域 417.太平洋大西洋水流问题 827.最大人工岛 127.单词接龙 841.钥匙和房间 463.岛屿的周长 797.所有可能得路径 797. 所有可能的路径 中等 给你一个有 n 个节点的…

基于nginx 动态 URL反向代理的实现

背景&#xff1a; 我们在项目中在这样一个场景&#xff0c;用户需要使用固定的软件资源&#xff0c;这些资源是以服务器或者以容器形式存在的。 资源以webAPI方式在内网向外提供接口&#xff0c;资源分类多种类型&#xff0c;每种类型的资源程序和Wapi参数都一样。这些资源部属…

域名交易系统源码 无需授权即可正常使用,附带后台功能

域名交易系统已测试可正常使用免授权带后台 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88949686 更多资源下载&#xff1a;关注我。

Unity 打包真机脚本丢失的问题

记录Bug Bug详情分析解决方案附录 Bug详情 项目中导入了UI Particle的Package,用于处理特效层级 unity 运行效果正常&#xff0c;打包真机后运行时发现特效并没有正确显示&#xff0c;真机Log如下图 需要接入查看真机Log工具的点这里 查看图中Log发现对应的Prefab上挂载的脚本…

uniApp中使用小程序XR-Frame创建3D场景(2)加载模型

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用&#xff0c;只完成了简单的环境搭建&#xff0c;这篇文章讲解如何加载3D模型。 1 加入模型加载标签 在XR-Frame框架中&#xff0c;加载资源都是在wxml文件的标签中实现的。下面是wxml中完整的代码 index.wxml &l…

github vscode 笔记

目录 前言1. 新建代码库2. 下载代码到本地3. 更新代码并上传到github 前言 github方便多人协作维护代码。该笔记记录了下面三个过程&#xff1a; 在github上新建代码库&#xff0c;下载代码到本地&#xff0c;将更新代码并上传到github 1. 新建代码库 2. 下载代码到本地 链…

本地GPU调用失败问题解决1

一&#xff1a;发现问题 1、电脑环境参数&#xff1a; OMEN by Gaming Laptop Windows 11 家庭中文版 2th Gen Intel(R) Core(TM) i9-12900H 2.50 GHz NVIDIA GeForce RTX 3060 Laptop GPU 显存6G PyCharm 2023.1.1(Professional Edition) 2、PyCharm中检测GPU&#x…

web自动化测试系列-selenium的运行原理和常用方法介绍(二)

目录 1.selenium的运行原理 2.常用方法介绍 接上文 &#xff1a;web自动化测试系列-selenium的安装和运行(一)-CSDN博客 在上文中我们编写了一段简单的代码 &#xff0c;可以驱动浏览器访问百度并搜索关键字 。这里我们再把这段代码再拿来加以说明 。 # 1. 导包 from selen…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口&#xff0c;遇到一个接口总是报405错误&#xff0c;有对接经验的开发应该都知道是请求方式不对&#xff0c;假如接口定义为POST请求的&#xff0c;但是客户端却用GET请求&#xff0c;这时候就会报这个错误。Android客户端那边使用xUtils框架…

【AutoML】一个用于图像、文本、时间序列和表格数据的AutoML

一个用于图像、文本、时间序列和表格数据的AutoML AutoGluon介绍安装AutoGluon快速上手 参考资料 AutoGluon自动化机器学习任务&#xff0c;使您能够在应用程序中轻松实现强大的预测性能。只需几行代码就可以训练和部署有关图像&#xff0c;文本&#xff0c;时间序列和表格数据…

搭建Spark单机版环境

在搭建Spark单机版环境的实战中&#xff0c;首先确保已经安装并配置好了JDK。然后&#xff0c;从群共享下载Spark安装包&#xff0c;并将其上传至目标主机的/opt目录。接着&#xff0c;解压Spark安装包至/usr/local目录&#xff0c;并配置Spark的环境变量&#xff0c;以确保系统…