寻找最大值最小值

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.mzph.cn/news/772885.shtml

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

相关文章

代码随想录算法训练营第三十五天 |860.柠檬水找零 、406.根据身高重建队列、452. 用最少数量的箭引爆气球

目录 一、860. 柠檬水找零 二、406. 根据身高重建队列 二、452. 用最少数量的箭引爆气球 一、232. 用栈实现队列860. 柠檬水找零232. 用栈实现队列 题目链接&#xff1a;力扣 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a; 题目&#xff1a; 在柠檬水摊上&#…

gin语言基础学习--会话控制(下)

练习 模拟实现权限验证中间件 有2个路由&#xff0c;/cookie和/home/cookie用于设置cookiehome是访问查看信息的请求在请求home之前&#xff0c;先跑中间件代码&#xff0c;检验是否存在cookie 访问home&#xff0c;会显示错误&#xff0c;因为权限校验未通过 package mainim…

centos创建svn库步骤

1.切换root用户 1、设置root用户的密码&#xff1a; sudo passwd root 2、切换到root用户权限 su 3、切换回个人用户权限 exit 2.用root用户执行yum install -y subversion 3.创建文件夹mkdir -p /data/svn/repository 4.创建SVN 版本库 5.输入命令&#xff1a; svnadmin creat…

IDEA连接github.com连接超时 Invalid authentication data. connect time out 的问题解决(亲测有效)

问题&#xff1a; IDEA连接github.com连接超时 Invalid authentication data. connect time out 解决方案&#xff08;亲测有效&#xff09;&#xff1a; 修改host文件&#xff1a;打开 C:\Windows\System32\drivers\etc\hosts&#xff0c;文件末尾添加如下内容&#xff1a; …

checkpoint 大模型、VAE、LoRA、Embedding、Controlnet这些是什么模型

1. Checkpoint 大模型&#xff1a;Checkpoint 大模型是一种深度学习模型&#xff0c;通过将模型参数保存到磁盘上并随时恢复它们来避免重新训练模型的昂贵成本和时间。这种方法可以使用较少的内存和计算资源来加载大型模型&#xff0c;并在需要时恢复模型参数以进行预测。 2. V…

OriginBot智能机器人开源套件

详情可参见&#xff1a;OriginBot智能机器人开源套件——支持ROS2/TogetherROS&#xff0c;算力强劲&#xff0c;配套古月居定制课程 (guyuehome.com) OriginBot智能机器人开源套件 最新消息&#xff1a;OriginBot V2.1.0版本正式发布&#xff0c;新增车牌识别&#xff0c;点击…

Vue3基础笔记(2)事件

一.事件处理 1.内联事件处理器 <button v-on:click"count">count1</button> 直接将事件以表达式的方式书写~ 每次单击可以完成自增1的操作~ 2.方法事件处理器 <button click"addcount(啦啦啦~)">count2</button> 如上&…

VMware下建立CentOS 7

1.点击新建虚拟机 2.下一步 3.选择号安装程序光盘映像文件位置&#xff0c;下一步 4.选择版本和操作系统然后下一步 5.编辑虚拟机名称并选择安装位置&#xff0c;然后下一步 6.设置最大磁盘大小&#xff0c;下一步 7.点击完成 8.点击编辑虚拟机设置 9.将此虚拟机内存设置为2G&a…

MongoDB集成springboot

其中有三项配置比较关键&#xff1a; 第一&#xff1a;mongo依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 第二&#xff1a;mongo配置 se…

中间件学习--InfluxDB部署(docker)及springboot代码集成实例

一、需要了解的概念 1、时序数据 时序数据是以时间为维度的一组数据。如温度随着时间变化趋势图&#xff0c;CPU随着时间的使用占比图等等。通常使用曲线图、柱状图等形式去展现时序数据&#xff0c;也就是我们常常听到的“数据可视化”。 2、时序数据库 非关系型数据库&#…

Day31:学习SpringCloud

学习计划&#xff1a;完成尚硅谷的尚上优选项目 学习进度&#xff1a;完成尚上优选项目的前置知识点&#xff1a;SpringCloud 知识点&#xff1a; 面试相关问题及源码 微服务篇 SpringCloud常见组件有哪些&#xff1f;Nacos的服务注册表结构是怎样的&#xff1f;Nacos如何支…

爬虫实践(1)

这一篇只提登录模拟&#xff0c;主要介绍chrome开发者窗口的使用&#xff0c;实际上相关接口调用都是用到cookie&#xff0c;需要再加一篇从token到cookie&#xff0c;以保证实践的完整性 以migu登录为例&#xff0c;分析其登录过程&#xff0c;之后可以使用任意语言模拟登录&…

P8687 [蓝桥杯 2019 省 A] 糖果

一、题目描述 P8687 [蓝桥杯 2019 省 A] 糖果 二、问题简析 由题意&#xff0c;糖果的种类 M M M 最多为 20 20 20&#xff0c;所以我们可以采用二进制位的方式来表示每包糖果的组成。具体&#xff1a;二进制的第 i i i 位表示第 i 1 i 1 i1 种糖果&#xff0c; 1 1 1…

Spark SQL DataFrame

Spark SQL DataFrame DataFrame是一个分布式数据集合&#xff0c;它被组织成命名列。从概念上讲&#xff0c;它相当于具有良好优化技术的关系表。 DataFrame可以从不同来源的数组构造&#xff0c;例如Hive表&#xff0c;结构化数据文件&#xff0c;外部数据库或现有RDD。这个…

小程序富文本图片宽度自适应

解决这个问题 创建一个util.js文件,图片的最大宽度设置为100%就行了 function formatRichText(html) {let newContent html.replace(/\<img/gi, <img style"max-width:100%;height:auto;display:block;");return newContent; }module.exports {formatRichT…

vue2创建项目(自用,初学)

vue2创建项目(自用&#xff0c;初学) 创建项目 1.在文件资源管理器中&#xff0c;选择想建立文件夹的目录&#xff0c;输入cmd指令 vue create 项目名2.初学练习选择最后一项 3.按空格进行勾选&#xff0c;回车下一步 4.因为是vue2&#xff0c;所以选2.x 5.选y 6.选Less 7.选…

canvas跟随鼠标画有透明度的椭圆边框

提示&#xff1a;canvas跟随鼠标画有透明度的椭圆边框 文章目录 前言一、跟随鼠标画有透明度的椭圆边框总结 前言 一、跟随鼠标画有透明度的椭圆边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

论文阅读-《Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation》

摘要 这篇论文主要研究了2D人体姿态估计的高效架构设计。姿态估计在以人为中心的视觉应用中发挥着关键作用&#xff0c;但由于基于HRNet的先进姿态估计模型计算成本高昂&#xff08;每帧超过150 GMACs&#xff09;&#xff0c;难以在资源受限的边缘设备上部署。因此&#xff0…

html和ashx之间的传值以及js和aspx传值

html 代码 var content window.location.href; var ori content.split(?) console.log(ori[1]) GetJsonByUrl2("getData_stock2.ashx?workline" ori[1], get_html); $.ajax({ type: "post", url: "Handler1.ashx", …

大数据入门(一)

大数据主要要解决&#xff1a;海量数据的采集&#xff0c;存储&#xff0c;分析计算问题。 大数据的特点&#xff1a;大量&#xff08;数据量大&#xff09;&#xff0c;高速&#xff08;数据量的累积越来越快&#xff09;&#xff0c;多样&#xff08;结构化数据和非结构化数…