package 递归;
public class 旋转数组最小数 {
/**
* 旋转数组的最小数字(二分法实现)
* @param args
*/
public static void main(String[] args) {
int[] arr = {
3, 4, 1, 2};
int n = min(arr);
System.out.println(n);
}
private static int min(int[] arr) {
int begin = 0;
int end = arr.length - 1;
//判断是否存在特殊情况
if (arr[begin] < arr[end])
return arr[begin];
//begin和end指向相邻元素,退出
while (begin + 1 < end) {
int mid = begin + ((end - begin) >> 1);
if (arr[mid] >= arr[begin]) {
begin = mid;
} else {
end = mid;
}
}
return arr[end];
}
}
java算法之旋转数组的最小数字(二分法实现)
猜你喜欢
转载自blog.csdn.net/qq_42794826/article/details/108978244
今日推荐
周排行