//二分查询
public class Test03 {
public static void main(String[] args) {
//定义数组
int[] arr={1,3,5,6,7,8,9,11};
//定义输入的数字
int key=7;
//用变量接收getar中的返回值
int s = getar(arr,key);
//输出
System.out.println(s);
}
//创建名为getar的静态方法,参入参数为int类型的数组,和int类型的key
public static int getar(int[] arr,int key){
//判断arr对象是否为空,和数组被的程度是否为0
if (arr==null||arr.length==0){
//如果达成了那两个条件,就代表此数组有问题,返回-1,结束程序
return -1;
}
int K=0;//开始下标
int J=arr.length-1;//结束下标
int P = 0;//中间值下标
while (K<=J){
P = (K+J)/2;//中间值的下标值为开始下标加上结束下标,除以2
//判断我们输入的值的大小是否大于中间值
if (key>arr[P]){
//如果大于中间值,那么就将开始的下标移到中间值的右边一位
K=P+1;
//判断输入的值是否小于中间值,如果小于中间值,就将结束的坐标值移到中间值的前面
}else if (key<arr[P]){
J=P-1;
}else {
//如果不大于也不小于,则代表输入的值已经在列表中找到,返回坐标值P
return P;
}
}
//如果发生,开始值大于结束值得话,就代表数组中是不存在的,返回-1
return -1;
}
}
禁止转载