//非递归的二分查找算法 public static int binarySearch(int[] arr,int findVal) { int low = 0; int high = arr.length-1; int mid; //退出循环的条件 //1、找到了查找的数 //2、没有找到,左边的下标(low)索引大于右边下标索引(high) while(low <= high) { mid = (low+high)/2; //等于则找到了,返回下标 if(findVal == arr[mid) return mid; //查找的数大于arr[mid],则让low等于mid右边索引,继续查找 else if(findVal > arr[mid]) low = mid+1; //查找的数小于arr[mid],则让high等于mid左边索引,继续查找 else high = mid-1; } return -1; } //递归的二分查找算法 public static int binarySearch(int[] arr,int findVal,int low,int high) { if(low <= high) { int mid = (low+high)/2; if(findVal > arr[mid]) { //大于就在mid的右边查找 return binarySearch(arr,findVal,mid+1,high); }else if(findVal < arr[mid]) { //小于就在mid的左边查找 return binarySearch(arr,findVal,low,mid-1); }else { //找到则返回下标索引 return mid; } }else { return -1; } }