中间值A[m]与查找值T进行比较 ①:如果 中间值A[m]与查找值T相等,直接返回m ②:如果中间值A[m]大于查找值T,则right = m -1,重新查找; ③: 如果中间值小于查找值T,则left = m +1,重新查找; ④:如果没有找到,循环结束,直接返回-1;
代码实现
循环代码实现:
privatestaticintbinarySearch(int[] arr,int val){int left =0, right = arr.length -1;while(left <= right){int mind =(left + right)/2;if(arr[mind]== val)return mind;if(arr[mind]< val)
left = mind +1;else
right = mind -1;}return-1;}
递归代码实现:
privatestaticintbinarySearch0(int[] arr,int left,int right,int val){while(left <= right){int mind =(left + right)/2;if(arr[mind]== val)return mind;if(arr[mind]< val)returnbinarySearch0(arr, mind +1, right, val);if(arr[mind]> val)returnbinarySearch0(arr, left, mind -1, val);}return-1;}