/* * 数组内元素非常多的时候,用for循环一一对比效率会变低 * 二分法的原理,把数组从中间对折,用中间的数值与要找的对比,如果大于要找的,就说明在左边,反之在右边 * 然后再用同样的办法,把左边的对折 * 当出现对折后比较,既没有大于也没有小于的情况时说明,中间值就是我们的要找的,return */ public static int er(int[] arr,int number){ int da =arr.length-1; //最大值索引 int xiao = 0; //最小值索引 int zhong = 0; //中间位 //循环条件:只要对折之后小的比大的大的了,循环停止 while(da>=xiao){ zhong = (da+xiao)/2; //对折中间位 if(arr[zhong]>number){ da=zhong-1; //当中间值大于number,number在左边,最大值-1 }else if(arr[zhong]<number){ xiao = zhong+1; //当中间值大于number,number在右边,最小值+1 }else{ return zhong; //相等时返回中间值,即number的索引 } } return -1; }