/**
* @Author:nyb
* @DESC: 请实现有重复数字的有序数组的二分查找。
* 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
* @Date: Created in 9:46 2020/12/2
* @Modified By:
*/
public class BinarySearch {
/**
* 二分查找
* @param n int整型 数组长度
* @param v int整型 查找值
* @param a int整型一维数组 有序数组
* @return int整型
*/
public static int upperBound(int n,int v,int[] a){
return recursionBinarySearch(a,v,0,n-1);
}
/**
* 递归实现
* @param arr
* @param key
* @param low
* @param high
* @return
*/
public static int recursionBinarySearch(int[] arr,int key,int low,int high){
if (arr==null||key<arr[low]||key>arr[high]||low>high){
return arr.length;
}
int middle=(low+high)/2;
if (key>arr[middle]){
return recursionBinarySearch(arr,key,middle+1,high);
}
二分查找-递归方式
最新推荐文章于 2022-11-18 11:33:11 发布