对于一个已经排好序的数组,要检查输入的一个数是否在数组中可以使用折半查找
图解如下
确定好left和right还有middle
原理
折半查找原理就是先找到中间值middle=(left+right)/2
用找到的第一个middle与你输入的key进行比较
如果key>middle那么将left+1接着再找中间值
如果key<middle那么将right-1接着再找中间值
如果key=middle那么输出存在这个数
当right<left,game over
//2.折半查找
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int key = sc.nextInt();
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (key > arr[middle]) {
left = middle + 1;
}
if (key < arr[middle]) {
right = middle - 1;
}
if (key == arr[middle]) {
System.out.println(key + "存在");
break;
}
}
if (left>right) {
System.out.println(key + "不存在");
}