无序数组中找到一个局部最小的位置

来源:互联网 发布:淘宝贞品坊 编辑:程序博客网 时间:2024/06/06 01:42
/** * 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:二分查找并不是数组有序时才可以使用,只要能够确定二分两侧的某一层存在要找的内容,就可以用
二分查找

原创粉丝点击