`
康敏栋
  • 浏览: 171067 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

数组中最值算法

阅读更多
源自《改善java程序的151建议》

1.求一个数组中的最大值
  (1)自行实现,快速查找最大值
public static int max(int[] data){
	int max=data[0];
	for(int i:data){
		max=max>i?max:i;
	}
	return max;
}

  (2)先排序,后取值
public static int max(int[] data){
	Arrays.sort(data.clone());
	return data[data.length-1];
}

第二种方法中为何要先data.clone()再排序?因为数组也是对象,如果不拷贝那就把原来的数组的顺序改不了。
方法一可以提升性能,而先排序后取值简单通俗易懂。从效率上讲,方法一快些。但实际测试中发现如果数组中数据少于一万,二者基本没啥差别

2.求一个数组中的第二大值
因为数组中的值是可以重复的,所以最大值可能有多个,故不能取倒数第二个值。需用一个特殊的算法先剔除重复的值,再进行排序
public static int secondMax(Integer[] data){
	List<Integer> dataList=Arrays.asList(data);
	//用treeset删除重复并排序
	TreeSet<Integer> ts=new TreeSet<Integer>(dataList);
	//取到比最大值小的,即第二大的值
	return ts.lower(ts.last());
}

分享到:
评论

相关推荐

    JAVA程序设计课件-数组的最值.pptx

    数组是存储多个同类型数据的集合,它们在许多算法和数据结构中扮演着基础角色。 首先,我们要理解数组的遍历。遍历数组是指通过循环或其他迭代方式依次访问数组中的每个元素。在Java中,最常见的遍历方式是使用for...

    数组最值查询.zip_labview_数组最值查询

    在LabVIEW编程环境中,数组最值查询是一项基本且重要的任务,尤其在数据分析、信号处理以及算法实现等场景中。LabVIEW是一种图形化编程语言,以其独特的数据流编程模型和直观的用户界面著称。本程序“数组最值查询....

    高级数据结构(并查集、树状数组、线段数)

    在计算机科学中,高效的数据结构对于优化算法性能至关重要。本资料包聚焦于三种高级数据结构:并查集(Disjoint Set)、树状数组(Fenwick Tree,也称为BIT - Binary Indexed Tree)以及线段树(Segment Tree)。...

    vb求一维数组最值函数

    ### vb求一维数组最值函数 #### 核心概念解析 在VB中,一维数组是一种线性数据结构,由一系列相同类型的元素组成,这些元素可以通过索引进行访问。求解数组中的最大值和最小值通常涉及遍历整个数组,比较每个元素...

    python中找出numpy array数组的最值及其索引方法

    Python是一种流行的编程语言,广泛应用于数据分析、机器学习、网络开发等领域。...通过本篇内容的分享,希望读者能够熟练地在NumPy数组中找到最值及其索引位置,进而更加便捷地处理数据和进行算法开发。

    numpy数组最值索引

    python中获取numpy数组每列最大值的索引,输出其行坐标。

    后缀数组倍增算法实现

    结合这两个知识点,我们可以构建一个系统,先用倍增算法构建后缀数组,然后利用ST算法实现的RMQ功能来快速查询字符串中某段后缀的最小值,这对于分析字符串性质或者进行特定的字符串搜索任务非常有用。在实际应用中...

    [大学生考试专用C语言教学课件]第8章 数组和算法基础.pptx

    求最值算法可以使用遍历数组的每个元素,比较大小并记录最大或最小值。 实践应用 在实际编程中,数组和算法基础是必不可少的知识点。例如,在统计学或数据分析中,数组可以用于存储大量数据,并使用算法进行数据...

    一维和二维树状数组的实现

    树状数组,也被称为线段树(Segment Tree),是一种数据结构,用于高效地处理动态区间查询和更新问题。...学习和掌握树状数组对于解决动态规划、区间查询和更新等问题非常有帮助,也是算法竞赛和实际编程中常用的工具。

    RMQ求区间最值(最大最小)

    区间最值查询(Range Minimum/Maximum Query,简称RMQ)是数据结构和算法领域中一个经典的问题。在处理大规模数据时,我们往往需要快速查询一个序列或者数组在某个连续子区间内的最大值或最小值,而RMQ算法就是为此...

    C算法案例合集代码实例

    插入排序 01,九九乘法表.c ...06.一维数组的最值.c 07.一维数组的逆置,c 08.冒泡法排序.c 09.选择排序.c 10.1.插入排序-直接插入排序.c 10.2.插入排序-希尔排序.c 11.快速排序.c 12.归并排序.c 13.堆排序.c

    查找序列(数组)中的最大值,最小值(例子)

    在编程领域,尤其是在处理数据集合时,经常需要找到序列或数组中的最大值和最小值。这些操作在统计分析、算法实现、数据处理等场景中都极为常见。在Java语言中,我们可以利用循环结构和条件判断来实现这个功能。这里...

    c++ 数组详解

    在C++中,数组是一种非常基础且重要的数据结构,它允许程序员存储一组同类型的元素。在数组详解中,我们将深入探讨一维数组、二维数组以及字符数组(即字符串)的定义、初始化、引用以及相关操作。 1. **一维数组**...

    实验二 方法的定义、重载;数组的应用 定义一个方法,并且该方法能够实现四则运算的功能

    描述中提到"掌握如何获取一维数组的最值"和"一维数组中元素的排序"。获取一维数组的最小值和最大值通常可以通过遍历数组并比较当前元素与已知最小值或最大值来实现。数组排序可以使用Java内置的`Arrays.sort()`方法...

    C语言_最值排序结合

    本话题主要聚焦于C语言中的“最值排序结合”这一概念,这通常涉及到查找数组中的最大值或最小值,并将其与排序算法相结合,以实现特定的排序效果。 在C语言中,找到数组中的最大值或最小值可以通过遍历数组来实现。...

    最值遗传算法

    通过深入研究这个Delphi实现的最值遗传算法,我们可以增强对遗传算法的理解,学习如何在实际项目中应用它,并进一步提升我们的编程技能。同时,这也是一个很好的实践案例,可以帮助我们更好地掌握遗传算法的精髓。

    java 遗传算法求最值

    - 随机数生成:遗传算法中的随机性是关键,因此需要合理使用Java的Random类或其他随机数生成库。 - 性能优化:由于遗传算法涉及到大量的计算,尤其是随着种群规模的增大,可能需要考虑优化算法的效率,例如并行化...

    高中算法与程序设计教学建议PPT课件.pptx

    本资源是一个关于高中算法与程序设计教学的建议ppt课件,共25页,涵盖了算法种类、评价学生的方式、数组知识的基本要求等内容。下面是对该资源的详细知识点解读: 一、算法种类 算法种类包括解析算法、枚举算法、...

    最小和数组(控制间距,前缀求和找最小)1

    4. 最大值和最小值的查找:在循环中,通过 max 和 min 函数来跟踪子数组的最值,以便找到最优解。 5. 遍历优化:通过控制指针间距,保证每次循环都在考虑满足 m 个元素的子数组,从而避免了无效的计算。 该算法的...

    实验五:遗传算法求解函数最值问题实验.docx

    2. 数组操作:用于存储和处理遗传算法中的数据。 3. 随机数生成:用于生成随机数,用于选择和交叉操作。 4. 适应度函数:用于评估个体的适应度,选择最优个体。 本实验展示了遗传算法在函数最值问题中的应用,展示...

Global site tag (gtag.js) - Google Analytics