二分查找的应用场景
Posted JAVA技术大揭底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找的应用场景相关的知识,希望对你有一定的参考价值。
看代码:
public static int getMinByBinarySearch(int[] arr, int begin, int end){
//如果就剩最后两个元素了 就从中选一个较小的返回
if(end - begin == 1) {
if(arr[begin] > arr[end]) {
return arr[end];
} else {
return arr[begin];
}
}
//中间位置
int mid = (begin + end) / 2;
//比较中间位置两边的相邻值
if(arr[mid] <= arr[mid+1]) {
//程递增趋势 就递归从前半部分查找
if(arr[mid] >= arr[mid-1]) {
return getMinByBinarySearch(arr, begin, mid);
} else {
//两边大于中间说明是最小值 因为是先降序后升序的数组
return arr[mid];
}
} else {
//程递减趋势 就从后半部分查找
return getMinByBinarySearch(arr, mid, end);
}
}
这样实现的话时间复杂度就是O(n),符合要求。
以上是关于二分查找的应用场景的主要内容,如果未能解决你的问题,请参考以下文章