public class 局部最小值 {
/*
* 二分 先比较两端是否存在局部最小如果没有 则二分 判断mid的左右两个数是否大于mid
* */
public static void main(String[] args) {
int[] arr={10,4,12,5,11,8,4,9};
// 两端存在则直接输出
if(arr[0]<arr[1]) System.out.println(arr[0]);
if(arr[arr.length-1]< arr[arr.length-2]) System.out.println(arr[arr.length-1]);
// 二分
int left=1;
int right=arr.length-2;
int mid;
while(left<=right){
mid=left+((right-left)/2);
if(arr[mid]>arr[mid-1]){
right=mid-1;
}else if(arr[mid]>arr[mid+1]){
left=mid+1;
}else{
System.out.println(arr[mid]);
break;
}
}
}
}
标签: