/* * 數組內元素非常多的時候,用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; }