/**
* Created by lxw, liwei4939@126.com on 2017/10/27.
* 在无序数组中二分查找找到局部最小值的位置
*/
public class LocMinPos {
public int getLocMinPos(int[] arr){
if(arr == null || arr.length ==0)
return -1;
if(arr.length ==1 || arr[0] < arr[1])
return 0;
if(arr[arr.length -1 ] < arr[arr.length -2])
return arr.length - 1;
int left =1;
int right = arr.length -2;
int mid =0;
while (left < right){
mid = (left + right)/2;
if(arr[mid] > arr[mid -1])
right = mid -1;
else if(arr[mid] > arr[mid + 1])
left = mid +1;
else
return mid;
}
return left;
}
}
PS:二分查找并不是数组有序时才可以使用,只要能够确定二分两侧的某一层存在要找的内容,就可以用
二分查找