穷举法:穷举法是最简单直观的一种方法,它遍历所有可能的解,然后找出最优解。对于一个给定的问题,你可以使用循环嵌套来生成所有可能的解,并在过程中保持追踪最优解。
int[] array = {1, 3, 2, 5, 4};
int maxValue = Integer.MIN_VALUE;for (int i = 0; i < array.length; i++) {if (array[i] > maxValue) {maxValue = array[i];}
}System.out.println("最大值:" + maxValue);
排序法:另一种常用的方法是对数组进行排序,然后直接取得最值。对于最大值,可以使用升序排序后取最后一个元素;对于最小值,可以使用升序排序后取第一个元素。
import java.util.Arrays;int[] array = {1, 3, 2, 5, 4};// 求最大值
Arrays.sort(array);
int maxValue = array[array.length - 1];
System.out.println("最大值:" + maxValue);// 求最小值
int minValue = array[0];
System.out.println("最小值:" + minValue);
分治法:分治法将问题划分为更小的子问题,然后将子问题的解组合起来得到原问题的解。对于最值问题,可以将数组划分为更小的子数组,并递归地求解每个子数组的最值,然后合并得到整个数组的最值。
int findMaxValue(int[] array, int start, int end) {if (start == end) {return array[start];}int mid = (start + end) / 2;int leftMax = findMaxValue(array, start, mid);int rightMax = findMaxValue(array, mid + 1, end);return Math.max(leftMax, rightMax);
}int[] array = {1, 3, 2, 5, 4};
int maxValue = findMaxValue(array, 0, array.length - 1);
System.out.println("最大值:" + maxValue);