数组指定元素查找 之 二分法查找

 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 }

原文地址:https://www.cnblogs.com/zui-ai-java/p/14195129.html