实现思路:
递归进行二分,分别找出两边的最大值。
Java代码:
public class max {
//判断数组是否为空,是否只有一个数 ;
public static void findMax(int[] arr){
if(arr == null){
System.out.println("此数组为空!");
return;
}else if(arr.length == 1){
System.out.println(arr[0]);
}
int max = half(arr, 0, arr.length - 1);
System.out.println(max);
}
//二分求最大值
public static int half(int[] arr, int a, int b){
//退出条件
if(a == b){
return arr[a];
}
int m = a + ((b - a) >> 1);
int left = half(arr, a, m);
int right = half(arr, m + 1, b);
//比较左右两边的值,返回更大的
if(left >= right){
return left;
}else{
return right;
}
}
public static void main(String[] args){
int[] arr = {3,2,5,9,2,3,7,1,8};
findMax(arr);
}
}
以上内容为个人学习总结,如有错误,欢迎指正。

该Java代码实现了一个递归的二分查找方法,用于在数组中高效地找到最大值。程序首先检查数组是否为空或只包含一个元素,然后通过半分策略查找最大值,每次将问题规模减半,直到找到最大值。
5675

被折叠的 条评论
为什么被折叠?



