问题:《编程之美》page166. 寻找数组中的最大值,最小值。
public class MinMax {
/**
* @author:lilywangcn
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array=new int[]{12,34,54,43,23,11,10,9,9,10,9,10};
int[] result=find(array);
System.out.println("min is " + result[0]+", max is " + result[1]);
result=merge(array,0,array.length-1);
System.out.println("min is " + array[result[0]]+", max is " + array[result[1]]);
}
/*
算法设计:直接比较,需要比较2n次
*/
public static int[] find(int[] array){
int min=array[0];
int max=array[1];
for(int i=1;i<array.length;i++){
if(min>array[i]) min=array[i];
if(max<array[i]) max=array[i];
}
int[] result=new int[2];
result[0]=min;
result[1]=max;
return result;
}
/*
算法设计:分治方法比较。类似比赛中的淘汰赛,最后胜出者一定是最好的。两两相比,取其小(大)者,再互相比较,z比较次数:1.5n-2。
*/
public static int[] merge(int[] array, int start, int end){
int[] result=new int[2];
if(start==end){
result[0]=result[1]=start;
return result;
}else{
int[] left=merge(array,start,(start+end)/2);
int[] right=merge(array,(start+end)/2+1,end);
if(array[left[0]]<array[right[0]])
result[0]=left[0];
else
result[0]=right[0];
if(array[left[1]]<array[right[1]])
result[1]=right[1];
else
result[1]=left[1];
}
return result;
}
}
分享到:
相关推荐
通过分治算法来求解一个数组中的最大值和最小值,不仅可以有效地降低问题的复杂度,还能充分利用计算机的处理能力。此外,这种方法还具有很好的可扩展性和并行处理潜力,非常适合于处理大规模数据集。
在处理数组时,经常需要找到数组中的最大值和最小值,这在各种算法和数据分析任务中都非常常见。本话题聚焦于如何在给定的包含20个元素的数组中找出最大值和最小值。 首先,我们要理解数组的基本概念。数组是由同一...
分治法是计算机科学中一种重要的算法设计策略,它的核心...在寻找数组中的最大值和最小值这一问题上,分治法能够提供高效且简洁的解决方案。通过学习和理解分治法,我们可以更好地应对复杂计算问题,并提升编程能力。
在实现中,我们使用了递归函数merge来实现分治算法,该函数将数组分成两个子数组,然后递归调用自身,直到找到整个数组的最大值与最小值。同时,我们也实现了非递归的方法来实现分治算法,通过比较两个方法的时间...
本压缩包文件"算法-数组排序 按数组内数字大小排序 取得最大值或最小值.rar"包含的内容很可能是关于如何实现数组排序以及如何高效地获取数组中的最大值和最小值的详细讲解。 一、排序算法概述 排序算法是用于重新...
在这个实验中,我们使用分治算法来查找数组元素的最大值和最小值。分治算法是一种常用的算法设计方法,它将问题分解成小规模的问题,然后解决这些小问题,并将结果组合起来以解决原始问题。 在这个实验中,我们将...
分治算法实验(用分治法查找数组元素的最大值和最小值).doc
该算法的思路是将数组元素大于 2 的数组分成两个子数组,然后对每一个子数组递归调用,直到最小的子数组的元素个数为 1 个或 2 个,此时直接就能得出最大值与最小值,然后合并子数组,比较 2 个子数组的最大值与...
在处理数组时,经常需要找出数组中的最大值和最小值,这对于数据分析、算法实现或者简单的数学计算都至关重要。本详细教程将指导你如何通过源代码在Java中实现这一功能。 首先,我们从基础开始。一个数组在Java中...
在本题中,我们关注的是如何运用分治算法来找到一组数字中的最大值和最小值,以及如何找出第k个最小元素。这两个问题都可以通过分治思想进行有效解决。 首先,寻找最大值和最小值。传统的做法是遍历整个数组,但...
分治算法实验(用分治法查找数组元素的最大值和最小值) 分治算法实验的主要目标是使用分治法查找数组元素的最大值和最小值。该实验 Report 分别从算法设计思想、程序设计、实验步骤和实验结果几个方面进行了详细的...
在算法设计实验中,有一道题目的要求是使用分治法(Divide and Conquer)来求解一个数组中的两个最大值与两个最小值。与蛮力法不同,分治法通过将问题分解成若干子问题来解决,这些子问题的规模比原问题小,并且具有...
在本例中,我们利用分治算法来寻找一个n元数组的最大值和最小值。 2. **最大值与最小值的查找**:通常,求解最大值和最小值的蛮力方法是遍历数组,比较每个元素,记录最大值和最小值。但分治算法提供了一个更高效的...
在本实验中,我们将关注如何利用分治法来寻找一个数组中的最大值和最小值。 首先,我们需要理解分治法的基本步骤: 1. **分解**:将问题分解为更小的子问题。对于找最大值和最小值的问题,我们可以将数组分为两半...
在编程领域,寻找一个数组中的最大值和最小值是一项基础且重要的任务。这通常涉及到遍历数组元素并比较它们的大小。"最值"这个标签表明我们要探讨的是关于找到数值序列中的最高和最低数值的问题。这里,我们有一个...
在处理数组时,我们经常需要进行一些基本操作,如查找数组中的最大值、最小值、计算平均值、对数组进行排序以及搜索特定的数据。这些操作对于理解和掌握编程基础至关重要,特别是对于初学者而言。以下是对这些操作的...
在给定的题目中,目标是寻找一个顺序表(在这里简化为整数数组)中的最大值和最小值。这是一个典型的分治应用。首先,我们分析问题,当数组长度为1或2时,可以通过简单的比较直接找出最大值和最小值。对于长度大于2...
* 编写一个求出最大值和最小值的分治算法。 实验内容: 我们知道,如果数组大小为 1,则可以直接给出结果,如果大小为 2,则一次比较即可得出结果,于是我们找到求解该问题的子问题,即数组大小 。到此我们就可以...
本示例介绍了一种简单且高效的算法来寻找整数数组中的最大值。 首先,我们创建了一个名为`FindMaxInArray`的类,并在其中定义了一个`main`方法,这是Java程序的入口点。在`main`方法中,我们创建了一个名为`numbers...
在本实验中,我们用分治法求解数组中的最大值和最小值,以此来深入理解分治算法。 **二、算法设计** 1. **基础情况**:当数组只有一个或两个元素时,最大值和最小值可以直接确定。如果只有一个元素,最大值和...