java-数组求最值 1

在 Java 中,数组是一种基本的数据结构,用于存储一系列相同类型的数据。数组的最值问题是指在一个数组中找到最大值和最小值的问题。这个问题在计算机科学和编程中是非常常见的,无论是在算法设计、数据分析还是实际应用中,都可能会遇到。
### 1. 暴力法
暴力法是最直接的方法,遍历数组中的每一个元素,不断更新最大值和最小值。代码实现如下:
```java
public class MinMax {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        System.out.println("最小值:" + min + ", 最大值:" + max);
    }
}
```
这种方法的时间复杂度为 O(n),其中 n 是数组的长度。虽然这种方法简单易懂,但在处理大规模数据时效率较低。
### 2. 二分查找法
二分查找法是一种在有序数组中查找特定元素的方法,也可以用来找到最值。首先,确定数组的最小值和最大值,然后通过比较中间元素的值来逐步缩小查找范围。
```java
public class MinMax {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
        int min = findMin(arr, 0, arr.length - 1);
        int max = findMax(arr, 0, arr.length - 1);
        System.out.println("最小值:" + min + ", 最大值:" + max);
    }
    public static int findMin(int[] arr, int start, int end) {
        if (start == end) {
            return arr[start];
        }
        int mid = (start + end) / 2;
        if (arr[mid] < arr[end]) {
            return findMin(arr, start, mid);
        } else {
            return findMin(arr, mid + 1, end);
        }
    }
    public static int findMax(int[] arr, int start, int end) {
        if (start == end) {
            return arr[start];
        }
        int mid = (start + end) / 2;
        if (arr[mid] > arr[end]) {
            return findMax(arr, start, mid);
        } else {
            return findMax(arr, mid + 1, end);
        }
    }
}
```
这种方法的时间复杂度为 O(log n),但在数组未排序时,需要先对数组进行排序,排序的时间复杂度为 O(n log n)。
### 3. 排序法
排序法是将数组元素进行排序,然后直接获取最小值和最大值。Java 中的 `Arrays.sort()` 方法可以实现这个功能。
```java
import java.util.Arrays;
public class MinMax {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
        Arrays.sort(arr);
        System.out.println("最小值:" + arr[0] + ", 最大值:" + arr[arr.length - 1]);
    }
}
```
这种方法的时间复杂度为 O(n log n),因为排序算法通常是 O(n log n) 的。

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

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

相关文章

出题123

题目时限空间说明 无特殊均默认 1 s , 256 M B 1s,256MB 1s,256MB Problem a 最大化 在最大化目标值的基础上选择的操作越多越好&#xff0c;且输出操作应当按照顺序执行&#xff0c;即你的输出顺序就是你的执行顺序&#xff0c;当有多个执行顺序可以最大化目标值时&#xff0…

python中的条件语句

python中语句的执行顺序 默认情况下&#xff0c;python代码的执行顺序&#xff0c;是从上到下依次执行的&#xff0c;这个顺序是不会变的&#xff0c; python中的条件语句 电脑的CPU芯片是能够进行算术运算也能进行逻辑判断的。 条件语句能够表达“如果...否则...” 这样的语…

基于51单片机的数字频率计(电路图+pcb+论文+仿真+源码)

于51单片机的数字频率计 设计的频率计范围能够达到1HZ-1MHZ(实际上51单片机达不到这个范围&#xff0c;不要在实验环境下进行)&#xff0c;这个是课设来着&#xff0c;用Proteus仿真实现的&#xff0c;给有需要的同学参考一下 仿真原理图如下&#xff08;proteus仿真工程文件可…

面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

Javascript特效之鼠标悬停特效【css】

先看一看效果&#xff0c;是不是很炫酷啊&#xff1f;&#xff1f; HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset""UTF-8"" /><title>CSS特效&#xff1a;鼠标悬停效果</title><link rel&q…

Pair和Triple的最佳实践

在软件开发中&#xff0c;数据结构是至关重要的概念。它们帮助我们以高效和有组织的方式存储和处理数据。在Java语言中&#xff0c;Pair&#xff08;对&#xff09;和Triple&#xff08;三元组&#xff09;是两个常见的数据结构&#xff0c;它们在不同的场景中都有广泛的应用。…

SQL分类——DDL(数据定义语言)

一、DDL&#xff08;数据定义语言&#xff09; &#xff08;1&#xff09;DDL——数据库——操作的相关语法&#xff1a; 查询 可以一次性查询当前数据库服务器中所有的数据库&#xff1a; SHOW DATABASES; 查询当前所处的数据库&#xff1a; SELECT DATABASE(); 创建 一般最简…

HTML语义化标签:为何它们如此重要?

HTML语义化标签&#xff1a;为何它们如此重要&#xff1f; 引言1. HTML语义化标签的基本概念2. HTML语义化标签的作用2.1 提升网页可读性2.2 增强可访问性2.3 优化搜索引擎排名2.4 提高性能 3. 代码示例结尾讨论 引言 在前端开发的世界里&#xff0c;HTML作为构建网页的基础语…

如何在软考机考中使用双拼双拼输入法

如何在软考机考中使用双拼双拼输入法 测试环境 2024/05/25 2024年度上半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;计算机化考试 如何在软考机考中使用双拼双拼输入法 Ctrl Shift 或者 Win Space 切换到谷歌拼音 然后右键控件&#xff0c;打开首选项&a…

Python | Leetcode Python题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution:# 在【100. 相同的树】的基础上稍加改动def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val q.val and self.isSameTree(p.left, q.ri…

热加载之再也不用喝杯茶等配置生效了

I. 背景介绍 Spring Boot作为一款基于Spring框架的快速应用开发平台&#xff0c;自发布以来就以其简化的配置、快速的启动和部署能力获得了广泛的关注和应用。它遵循“约定优于配置”的原则&#xff0c;通过自动配置机制减少了开发者的工作量&#xff0c;使得创建独立运行的、…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

基于.net开发的博客系统

基于.net开发可以批量上传md文件生成文章的博客系统 .NET 个人博客 基于.net开发的博客系统 个人博客系统&#xff0c;采用.net core微服务技术搭建&#xff0c;采用传统的MVC模式&#xff0c;使用EF core来对mysql数据库(sqlite数据库)进行CRUD操作项目 为什么要自己开发博客…

Python面试宝典:Python中与数据库连接和操作相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十五章:数据库编程:第一节:数据库连接和操作】 第十五章:数据库编程第一节:数据库连接和操作数据库API规范:DB-API使用SQLite数据库使用MySQL数据库使用ORM工具注意事项python中和…

生信技能46 - Call人类线粒体变异和提取chrM变异位点

使用bwa将样本fastq文件比对到线粒体参考基因组, 并使用bcftools进行call变异。 基础软件安装 conda install bcftools -y conda install samtools-y conda install bwa -y一、Call人类线粒体变异 1. 构建线粒体参考基因组 参考基因组: 人类线粒体参考基因组NC_012920.1 …

clion读取文件设置为读取当前目录下的文件

1.问题 使用vs读取文件时一切正常 但是同样的代码在clion中无法正常执行 原因 原因&#xff1a;clion的源文件找不到input.txt文件的位置 需要设置工作目录&#xff0c;例如此时input.txt在当前目录下&#xff0c;那么就设置 设置当前文件的工作目录为$FileDir$即可&am…

Ubuntu 如何根据NVIDIA显卡型号确定对应的显卡驱动版本并安装

目录 一、查询推荐安装的驱动版本 二、安装推荐版本的驱动 1. 通过终端安装&#xff0c;只安装 nvidia 驱动&#xff08;亲测可用&#xff01;&#xff09; 2. 通过 software & Updates 安装&#xff0c;安装 nvidia 驱动。 三、查询能安装的最新的显卡驱动版本 1. 方…

人生是场无限游戏

人生是有限的&#xff0c;但游戏是无限的&#xff0c;所谓无限&#xff0c;就是你有无限个选择&#xff0c;可以规划无限个发展路径&#xff0c;追求无限种人生成就可能。 我经常把人生比喻为游戏&#xff0c;我觉得这样更容易理解我们所处的环境和所做出的选择。我最近和我女儿…

C++—— set、map、multiset、multimap的介绍及使用

目录 关联式容器 关联式容器的特点和使用场景 树形结构与哈希结构 树形结构 哈希结构 键值对 set set的介绍 set的定义方式 set的使用 multiset map map的介绍 map的定义方式 map的使用 multimap 关联式容器 C标准模板库&#xff08;STL&#xff09;中的关联…

AI必然趋势下,产品经理未来何在?路怎么走?

AI已经普遍运用到产品经理的日常工作中了。让它写个需求分析、做个PRD不在话下… 因为AI&#xff0c;也能经常听到有人在谈论&#xff1a;产品经理未来是否会被取代&#xff1f; 未来&#xff0c;产品经理的路该往哪走、怎么走&#xff1f; 未来&#xff0c;产品经理职业规划…