//实现二分查找
public static int binarySearch(int[] arr,int toFind){
int left = 0;
int right = arr.length-1;
while(left <= right){
int mid = (left+right)/2; //中间元素下标
if(toFind < arr[mid]){
//去左侧找
right = mid - 1;
}else if(toFind > arr[mid]){
//去右侧找
left = mid + 1;
}else{
//找到了
return mid;
}
}
//没找到
return -1;
}
public static void main(String[] args) {
int[] array = {3,7,8,5,2,1,6};
// int toFind = 5;
System.out.println(binarySearch(array,5));
}
代码实现
运行结果: 输入toFind:5 输出:下标3
思路:
先取中间位置的元素,然后用待查的元素和中间元素进行比较,会有三种情况:
- 小于,说明在左侧
- 大于,说明在右侧
- 等于,则返回
循环的条件为左元素小于等于右元素,当等于的时候说明所有元素都查了,如果没找到就循环解说,说明其中没有要查的元素。
注意:循环的条件,循环中的逻辑(上述)
循环当中中间元素要随着循环不断更改
int mid = (left+right)/2; //中间元素下标



