实现思路:
递归进行二分,分别找出两边的最大值。
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);
}
}
以上内容为个人学习总结,如有错误,欢迎指正。