二分法的前提是数组里面的数据必须是从小到大排序过的才可以使用二分法
public class ErFen {
public static void main(String[] args) {
int index =ef(100);//把100传进ef方法里面,并且赋值给index
System.out.println(index);//把index打印出来,如果数组里面有这个数,就会返回这个数的索引,如果没有就返回-1
}
public static int ef(int i) {//定义一个方法
int [] nums = {1, 3, 15, 65, 78, 100, 402};
int a = 0 ;//起始值
int b = nums.length-1;//结束索引
while (a<=b){
int m = (a+b)/2;//中间的索引
if (nums[m]==i){//如果中间的索引与用户传进来的数一样就返回中间的索引
return m;
}else if (nums[m]>i){//如果传进来的数比中间索引小的话,结束索引就为中间索引的前一位,开始索引不变继续下一个循环
b=m-1;
}else{//如果传进来的数比中间索引大的话,开始索引就为中间索引的后一位,结束索引不变继续下一个循环
a = m +1;
}
}
return - 1;//如果数组里面没有这个数就返回-1
}
}