1 public class ArrayExer3 { 2 public static void main(String[] args) { 3 //二分法查找前提:元素值是有序的 4 int[] arr = {-54,-36,-18,0,15,36,69,109,188,333}; 5 6 //查找的目标元素 7 int dest = 10; 8 9 //搜索范围的首索引 10 int head = 0; 11 //搜索范围的尾索引 12 int end = arr.length-1; 13 //判断标识 14 boolean isFlag = true; 15 //while循环 16 while (head <= end) { 17 //查找范围的中间索引(偏左) 18 int middle = (head + end)/2; 19 //恰好相等,就找到了 20 if (arr[middle] == dest) { 21 System.out.println("目标元素找到了,其索引是:" + middle); 22 //更改判断标识 23 isFlag = false; 24 // 目标元素找到了,用break来结束while循环 25 break; 26 } else if (arr[middle] < dest) { // 目标索引偏大 27 //以(中间索引+1) 为搜索范围的首索引,来缩短查找范围 28 head = middle+1; 29 } else { //目标索引偏小 30 //以(中间索引-1) 为搜索范围的尾索引,来缩短查找范围 31 end = middle-1; 32 } 33 } 34 35 //如果判断标识一直没变,说明目标元素没有找到 36 if(isFlag){ 37 System.out.println("很抱歉,目标元素找不到的啦!"); 38 } 39 } 40 }