数组的总结:
一、数组求最大值、最小值(三种方法)
方法一:
思路:(最小值思路与最大值相同)
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,则结果也不受初始值的影响;第一种
方法最好用,后两种不好想。
|