二分查找
步骤
- 首先选择数组中间的数字和需要查找的目标值比较
- 如果相等最好,就可以直接返回答案了
- 如果不相等
- 如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除。把最右边最后一个查找的数移到中间数的前一个
- 如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除。把最左边要开始查找查找的数移到中间数的后一个
![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/1203b17617493a4294ca40a8e243e953.gif)
代码实现
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
int arr[] = {1,2,4,6,8,9};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int num = sc.nextInt();
int left = 0;
int right = arr.length -1;
while (left <= right){
int middle = (right + left)/2;
if(arr[middle] == num) {
System.out.println(middle);
break;
}
else if(arr[middle] > num){
right = middle -1;
}
else if (arr[middle] < num){
left = middle +1;
}
}
}
}