二分查找的思路就是:首先传入的数组要有序,然后每次都与中间的数据做比较,再判断是找到了要找的数据,还是找得大了还是找得小了,然后再决定接下去比较的范围
/** * * @param arr从小到大的有序的数组 * @param target目标数字 * @return目标数字所在的下标 */ public static int BinarySearch(int[] arr,int target){ int left = 0; int right = arr.length - 1; while(left <= right){ //循环退出的条件 int temp = left + (right - left)/2; //可以防止数据越界 if(target == arr[temp]){ //每次都与中间的数值做比较 return temp+1; }else if(target > arr[temp]){ left = temp + 1; }else{ right = temp - 1; } } return -1; }