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 }
![]()