
- 局部最小问题,无序数组中找到一个局部最小即可
- 分为三种情况 0<1 小/ N-1>N \ \ 先降后升,中间必定存在局部最小 /
- 只要具有排他性的问题都可以用二分
public class Code07_BSAwesome {
public static int getLessIndex(int[]arr){
if(arr==null||arr.length==0){
return -1;
}
if (arr.length==1||arr[0]<arr[1]){
return 0;
}
if (arr[arr.length-2]>arr[arr.length-1]){
return arr.length-1;
}
int left=1;
int right= arr.length-2;
int mid=0;
while (left<right){
mid=left+((right-left)>>1);
if (arr[mid-1]<arr[mid]){
right=mid-1;
}else if (arr[mid]>arr[mid+1]){
left=mid+1;
}else {
return mid;
}
}
return left;
}
}