public class Test {
public static void main(String[] args) {
int arr[] = {1,5,9,7,5,3,2,6,4,8};
System.out.println(getMax(arr));
}
public static int getMax(int []arr){
return process(arr,0,arr.length - 1);
}
/*
* 递归求数组arr[]上的最大值
* */
public static int process(int []arr,int L,int R){
if(L == R)return arr[L];//数组只有一个值
/*
* 中点:
* mid = (L+R)/2
* 为了防止数组长度过大,导致 L+R 溢出
* 所以 mid = L + (R - L)/2
* == L + ((R - L) >> 1)//往右移一位
* */
int mid =L + ((R - L) >> 1);//中点
int leftMax = process(arr,L,mid);
int rightMax = process(arr,mid + 1,R);
return Math.max(leftMax,rightMax);
}
}
代码来自视频学习:https://www.bilibili.com/video/BV13g41157hK?p=3