原理

实现
递归实现
private static int binarySearch2(int[] arr,int begin,int end, int r){if(arr.length<=0 || begin==end) {return -1;}//避免整数溢出int mid = begin + ((end-begin)>>1);if(r== arr[mid]){ return mid; }if(r> arr[mid]){return binarySearch2(arr,mid+1, end,r);}else{return binarySearch2(arr,begin,mid-1,r);}}
循环实现
private static int binarySearch3(int[] arr, int r){if(arr == null || arr.length<=0) {return -1;}int begin = 0;int end = arr.length;while (end>begin){int mid = begin + ((end-begin)>>1);if(arr[mid] ==r){return mid;}if(arr[mid] > r){end = mid-1;}else{begin = mid+1;}}return -1;
存在的问题
当存在多个重复值时,查询的结果返回不稳定
