标签:查询 下标 bre 数组 min bsp length 成功 排除
//折半查找(二分法)
public void arrayHalfQuery() {
//定义一个数组,类型为int整型数据类型
int[] num = {1,3,4,7,9,10,12,15,17,19,21,22,25,26,28,29,30};
//定义一个要查找的key值
int key = 18;
//取出数组中最大值下标和最小值下标
int min = 0;
int max = num.length-1;
//调用死循环
while(true) {
//定义一个对半查找的中间值下标
int mid = (min+max)/2;
//当key的值与中间值下标的值相等,则查找成功,并且跳出循环
if(key == num[mid]) {
System.out.println("你要查询值的下标:"+mid);
break;
//当key的值大于num[mid],则排除左边,min往中间mid+1移动
}else if(key > num[mid]) {
min = mid +1;
//当key的值小于num[mid],则排除右边,max往中间mid-1移动
}else if(key < num[mid]) {
max = mid -1;
}
//当max小于min,则说明已经查找完整个数组也没有找到,则结束死循环
//因为key只有三种情况,所以要单独使用if分支语句,不能使用else if
if(max<min) {
System.out.println("你要查找的数值在本数组中不存在!");
break;
}
}
}
标签:查询 下标 bre 数组 min bsp length 成功 排除
原文地址:https://www.cnblogs.com/private-mingmie/p/11826660.html