Java程序查找数组中的最大值和最小值

时间:2020-01-09 10:35:27  来源:igfitidea点击:

要在Java中的数组中查找最大值和最小值,可以使用以下选项之一:

  • 迭代数组并查找最大值和最小值。参见示例。
  • 我们还可以编写一个递归方法以递归地遍历数组以查找数组中的最大值和最小值。参见示例。
  • 我们可以使用Arrays.sort()方法对数组进行排序,然后获取已排序数组的第一个和最后一个元素。参见示例。

迭代数组以查找最大值和最小值

首先将两个变量(最大值和最小值)以初始值作为数组的第一个元素。遍历数组,并将当前元素与max变量进行比较,如果当前数组元素大于max,则将当前元素分配给max。否则,将元素与min变量进行比较,如果当前数组元素小于min,则将当前元素分配给min。

public class MaxMinArray {
  public static void main(String[] args) {
    int arr[] = {54, 24, -4, 0, 2, 45, 54, -9, 7};		 
    // assign first array element to two variables
    int max = arr[0];
    int min = arr[0];
    // iterate and compare from array index 1
    for(int i = 1; i < arr.length; i++){
      if(max < arr[i]){
        max = arr[i];
      }else if(min > arr[i]){
        min = arr[i];
      }		   		   
    }
    System.out.println("Maximum number = " 
         + max + " Minimum number = " + min);		
  }
}

输出:

Maximum number = 54 Minimum number = -9

使用递归查找数组中的最大值和最小值

public class MaxMinArray {
  public static void main(String[] args) {
    int arr[] = {54, 24, 4, 0, 2, 45, 55, 9, -7, 68};	
    int max = maxUsingRecursion(arr, arr[0], 0);
    int min = minUsingRecursion(arr, arr[0], 0);
    System.out.println("Maximum number = " 
         + max + " Minimum number = " + min);		
  }

  private static int maxUsingRecursion(int[] arr, int num, int size){	
    // base case
    if(size == arr.length){
      return arr[size-1];	
    }
    return Math.max(num, maxUsingRecursion(arr, arr[size], ++size));
  }

  private static int minUsingRecursion(int[] arr, int num, int size){
    // base case
    if(size == arr.length)
      return arr[size-1];
    return Math.min(num, minUsingRecursion(arr, arr[size], ++size));
  }
}

输出:

Maximum number = 68 Minimum number = -7

通过排序查找数组中的最大值和最小值

public class MaxMinArray {
  public static void main(String[] args) {
    int arr[] = {54, 24, 4, 0, 2, 45, 55, 9, -7, 68};
    Arrays.sort(arr);

    System.out.println("Maximum number = " 
         + arr[arr.length - 1] + " Minimum number = " + arr[0]);		
  }
}

输出:

Maximum number = 68 Minimum number = -7