`
aaron-han
  • 浏览: 27108 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

算法基础之寻找最大最小值

 
阅读更多
分治思想求解N个数中的最大值max和最小值min:分别求出前后N/2个数中的max和min,然后取较大的max和较小的min。
比较次数:f(N) = 2*f(N/2) + 2 = ... = 1.5N - 2。
import java.util.Arrays;

/**
 * 寻找最大最小值 【分治】
 * 
 * @author aaron-han
 * 
 */
public class FindMaxMin {

	public static void main(String[] args) {
		int[] arr = com.utils.Utils.randomIntArray();
		System.out.println(Arrays.toString(arr));
		int[] result = findMaxMin(arr, 0, arr.length - 1);
		System.out.println("Max = " + result[1] + " , Min = " + result[0]);
	}

	// 0存小 1存大
	public static int[] findMaxMin(int[] arr, int low, int high) {
		if (high - low <= 1) {
			return arr[low] < arr[high] ? new int[] { arr[low], arr[high] }
					: new int[] { arr[high], arr[low] };
		}

		int[] left = findMaxMin(arr, low, low + (high - low) / 2);
		int[] right = findMaxMin(arr, low + (high - low) / 2 + 1, high);

		return new int[] { left[0] < right[0] ? left[0] : right[0],
				left[1] > right[1] ? left[1] : right[1] };
	}

}
分享到:
评论

相关推荐

    matlab遗传算法求二元函数最小值.zip

    1. **遗传算法基础** 遗传算法主要包括四个主要步骤:初始化种群(`initpop.m`)、选择(`selection.m`)、交叉(`crossover.m`)和变异(`mutation.m`)。首先,`initpop.m`会创建一个初始种群,其中包含多个随机...

    cwcms1.0.zip_最大值最小值_遗传算法 最小

    在本资料“cwcms1.0.zip”中,主要探讨了如何利用遗传算法来解决寻找最大值和最小值的问题,并提供了MATLAB的实现案例。 1. **遗传算法基础** 遗传算法源于生物进化理论,通过模拟种群的遗传、突变和选择过程,...

    AdapGA.rar_AdapGA_函数最大值_基本遗传算法_最小值matlab_遗传 最小值

    一、遗传算法基础 遗传算法的核心思想源自生物进化过程,主要包括选择(Selection)、交叉(Crossover)、变异(Mutation)和适应度评价(Fitness Evaluation)四个主要步骤。在MATLAB中,我们首先需要定义问题的...

    同时查找最大、最小值及证明

    例如,快速选择算法在平均情况下可以在O(n)的时间内找到数组中的第k小(或第k大)元素,这在寻找最大值和最小值时非常有用。 此外,如果数据允许,可以使用并行计算或分布式计算来加速查找过程。例如,在多核处理器...

    JAVA排序最大最小值.pdf

    本文主要讲解了 JAVA 编程语言中的排序算法,包括寻找最大最小值和数组排序两部分。 一、寻找最大最小值 在一组无序的数中找出最大(最小值)的问题,可以使用循环结构解决。例如,输入 10 个数,找出最大值,可以...

    MATLAB神经网络和优化算法:3.遗传算法求解最优解最大值.zip

    遗传算法求解最优解最大值”专注于讲解如何利用遗传算法寻找最大值问题的最优解。 遗传算法是一种模拟生物进化过程的全局优化技术,由John H. Holland在20世纪60年代提出。它的核心思想是模拟自然选择、遗传、突变...

    c语言程序找出其中的最大值和最小值问题

    接着,我们有两个嵌套的`for`循环,分别用来寻找最大值和最小值。在寻找最大值的过程中,先假设数组的第一个元素`arr[0]`是最大值,然后通过循环比较数组中其余的元素,如果发现有比`max`更大的值,就更新`max`。...

    最大值和最小值获取

    在编程领域,寻找一个数组中的最大值和最小值是一项基础且重要的任务。这通常涉及到遍历数组元素并比较它们的大小。"最值"这个标签表明我们要探讨的是关于找到数值序列中的最高和最低数值的问题。这里,我们有一个...

    第03章 方法与数组 06 二维数组与最大最小值算法

    本章节“第03章 方法与数组 06 二维数组与最大最小值算法”将深入探讨这两个核心概念。 首先,我们来看二维数组的定义和创建。在Java中,二维数组可以用以下方式声明: ```java int[][] array = new int[行数][列...

    粒子群优化算法求解函数最大值和最小值问题,粒子群优化算法图示,C/C++

    在给定的压缩包文件中,可能包含的是一个C/C++实现的粒子群优化算法,用于求解函数的最大值或最小值问题。通过阅读和理解代码,你可以了解具体如何应用PSO算法解决这类问题,包括如何定义粒子结构、如何设置参数、...

    比较数的最大值和最小值

    - **功能**:通过交换数组中某些元素的位置来提高寻找最大值和最小值的效率。 - **实现**: - 首先计算中间索引 `k`。 - 将数组分为两部分,对于每一对 `(x[i], x[k+i])`,如果 `x[k+i] [i]`,则交换它们的位置。 ...

    C++数组之中的最大值最小值应用

    总结起来,在C++中寻找数组中的最大值和最小值主要有两种方法:一是手动遍历数组并更新最大值和最小值,二是使用标准库提供的函数。前者更适合初学者理解算法原理,后者则提供了更高的效率和便利性。无论哪种方式,...

    算法分析作业答案:求最大数与次大数的最优算法

    在计算机科学领域,特别是在数据处理和算法设计方面,经常需要找到一组数值中的最大值或最小值,甚至是第二大值等。这类问题不仅在编程竞赛中常见,也是面试和技术评估中的热门话题之一。本篇文章将详细介绍如何有效...

    matlab开发-最大值和最小值

    在MATLAB编程环境中,寻找一个数组中的最大值和最小值是常见的操作,这对于数据分析和算法开发至关重要。MATLAB提供了内置的`max`和`min`函数来帮助我们完成这项任务。这两个函数不仅可以应用于一维数组,也可以应用...

    每日一题:查找数组中最大最小值1

    总结来说,这两种算法体现了在解决寻找数组最大值和最小值问题时的不同策略。线性扫描法体现了基础的迭代思想,而分组比较法则展示了如何通过巧妙地组织数据和比较过程来提高效率。在设计算法时,我们需要权衡代码的...

    有一个int数组{1,3,5,-2,4,6},要求获取:最大值、最小值、元素和、平均值

    这些都是数据分析和算法基础中的关键概念。 1. **最大值**:数组中的最大值是指所有元素中数值最大的那个。对于给定的数组,可以通过遍历数组并比较当前元素与已知最大值来找到它。初始化最大值为数组的第一个元素...

    矩阵中寻找鞍点_C++_算法_矩阵鞍点算法_鞍点_

    总结起来,寻找矩阵鞍点是C++编程中的一项基础任务,它涉及到基本的矩阵操作和算法设计。理解这个概念有助于提升在实际问题中处理二维数据的能力。通过上述的C++实现,我们可以有效地在矩阵中找到鞍点,如果存在的话...

    求数组最大值,最小值,平均值,排序,寻找指定数据.rar————求数组最大值,最小值,平均值,排序,寻找指定数据

    例如,求最大值和最小值的时间复杂度是O(n),计算平均值也是O(n),而排序算法的时间复杂度可以从O(n²)(冒泡、选择、插入排序)到O(n log n)(快速排序)。搜索特定数据的线性搜索时间复杂度是O(n),而二分搜索是O...

    汇编语言,最大值、最小值、中值问题

    通过上述步骤,我们成功地实现了使用汇编语言来寻找一组输入数字的最大值、最小值和中值的功能。这个过程不仅包括了冒泡排序算法的具体实现,还包括了输入处理、屏幕输出等多方面的功能。尽管汇编语言的编写较为复杂...

    JavaScript遍历查找数组中最大值与最小值的方法示例

    除了这些基础方法,还可以使用`reduce()`函数来寻找最大值和最小值。`reduce()`函数可以对数组中的每个元素应用一个函数,将所有元素减少到单个输出值。例如: ```javascript var arr = [2,4,5,6,7,0,9,10,15,1]; ...

Global site tag (gtag.js) - Google Analytics