A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王会涛 中级黑马   /  2014-11-11 13:27  /  748 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组的总结:
一、数组求最大值、最小值(三种方法)
方法一:
思路:(最小值思路与最大值相同)
1.获取最值需要比较,每一次比较都会有一个较大的值,因为
该值不确定,所以通过一个变量进行存储;
2.让数组中的每一个元素都和这个变量比较,如果大于变量的值,
就用该变量记录较大值;
3.当所有的元素都比较完成,那么该变量存储的值就是数组中的最大值;
步骤:
1.定义变量,初始化为数组中任意一个元素即可;
2.通过循环语句对数组遍历;
3.在遍历过程中,定义判断条件,如果遍历的元素比变量中的大,就赋值
给该变量;
需要定义一个功能来完成,以便提高复用性。
1.明确结果,数组中的最大值
2.未知内容,一个数组,int[]
代码如下:
给定数组arr={1,56,8,2,5,},求最大值与最小值。
public class ArrayTest {
public static int getMax(int[] arr){
  int max = arr[0];
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]>max)
    max=arr[i];
  }
  return max;
  
}

public static int getMin(int[] arr) {
  int min = arr[0];
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]<min)
    min=arr[i];
  }
  return min;
  
}
public static void main(String[] args) {
  int[] arr={1,56,8,2,5,};
  System.out.println("方法一:------------");
  System.out.println("max:"+getMax(arr));
  System.out.println("min:"+getMin(arr));
  

}
}
方法二:
与方法一的不同点:
可以将临时变量初始化为0,这时我们获得的是数组最大值的角标;
public class ArrayTest {
public static int getMax(int[] arr){
  int max = 0;
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]>arr[max])
    max=i;
  }
  return arr[max];
  
}

public static int getMin(int[] arr) {
  int min = 0;
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]<arr[min])
    min=i;
  }
  return arr[min];
  
}
public static void main(String[] args) {
  int[] arr={1,56,8,2,5,};
  System.out.println("方法一:------------");
  System.out.println("max:"+getMax(arr));
  System.out.println("min:"+getMin(arr));
  

}
}
方法三:
与前两个方法不同:通过定义系统最大值和最小值
MAX_VALUE:值为 231-1 的常量,它表示 int 类型能够表示的最大值。
MIN_VALUE:值为 -231 的常量,它表示 int 类型能够表示的最小值。
public class ArrayTest {
public static int getMax(int[] arr){
  int max = Integer.MIN_VALUE;
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]>max)
    max=arr[i];
  }
  return max;
  
}

public static int getMin(int[] arr) {
  int min = Integer.MAX_VALUE;
  for(int i=0;i<arr.length-1;i++) {
   if(arr[i]<min)
    min=arr[i];
  }
  return min;
  
}
public static void main(String[] args) {
  int[] arr={1,56,8,2,5,};
  System.out.println("方法一:------------");
  System.out.println("max:"+getMax(arr));
  System.out.println("min:"+getMin(arr));
  

}
}
总结:三个方法主要不同点:主要是存储最大值变量的初始值不相同,
如果定义数组中的数,则比较结果不收初始值的影响;如果定义为零,
通过获取最值的下标,本质与第一种方法相同  ;如果定义最大值为
MIN_VALUE,最小值为MAX_VALUE,则结果也不受初始值的影响;第一种
方法最好用,后两种不好想。







评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马